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 Codes:
73//   * ErrCodeInternalServerException "InternalServerException"
74//   This exception occurs when there is an internal failure in the EMR service.
75//
76//   * ErrCodeInvalidRequestException "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 Codes:
155//   * ErrCodeInternalServerError "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 Codes:
257//   * ErrCodeInternalServerError "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 Codes:
340//   * ErrCodeInternalServerException "InternalServerException"
341//   This exception occurs when there is an internal failure in the EMR service.
342//
343//   * ErrCodeInvalidRequestException "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 Codes:
426//   * ErrCodeInternalServerError "InternalServerError"
427//   Indicates that an error occurred while processing the request and that the
428//   request was not completed.
429//
430//   * ErrCodeInvalidRequestException "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 Codes:
510//   * ErrCodeInternalServerException "InternalServerException"
511//   This exception occurs when there is an internal failure in the EMR service.
512//
513//   * ErrCodeInvalidRequestException "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 Codes:
593//   * ErrCodeInternalServerException "InternalServerException"
594//   This exception occurs when there is an internal failure in the EMR service.
595//
596//   * ErrCodeInvalidRequestException "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 Codes:
676//   * ErrCodeInternalServerException "InternalServerException"
677//   This exception occurs when there is an internal failure in the EMR service.
678//
679//   * ErrCodeInvalidRequestException "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 Codes:
782//   * ErrCodeInternalServerError "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 Codes:
867//   * ErrCodeInternalServerException "InternalServerException"
868//   This exception occurs when there is an internal failure in the EMR service.
869//
870//   * ErrCodeInvalidRequestException "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 Codes:
949//   * ErrCodeInternalServerException "InternalServerException"
950//   This exception occurs when there is an internal failure in the EMR service.
951//
952//   * ErrCodeInvalidRequestException "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 Codes:
1034//   * ErrCodeInternalServerException "InternalServerException"
1035//   This exception occurs when there is an internal failure in the EMR service.
1036//
1037//   * ErrCodeInvalidRequestException "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 opListBootstrapActions = "ListBootstrapActions"
1063
1064// ListBootstrapActionsRequest generates a "aws/request.Request" representing the
1065// client's request for the ListBootstrapActions 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 ListBootstrapActions for more information on using the ListBootstrapActions
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 ListBootstrapActionsRequest method.
1080//    req, resp := client.ListBootstrapActionsRequest(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/ListBootstrapActions
1088func (c *EMR) ListBootstrapActionsRequest(input *ListBootstrapActionsInput) (req *request.Request, output *ListBootstrapActionsOutput) {
1089	op := &request.Operation{
1090		Name:       opListBootstrapActions,
1091		HTTPMethod: "POST",
1092		HTTPPath:   "/",
1093		Paginator: &request.Paginator{
1094			InputTokens:     []string{"Marker"},
1095			OutputTokens:    []string{"Marker"},
1096			LimitToken:      "",
1097			TruncationToken: "",
1098		},
1099	}
1100
1101	if input == nil {
1102		input = &ListBootstrapActionsInput{}
1103	}
1104
1105	output = &ListBootstrapActionsOutput{}
1106	req = c.newRequest(op, input, output)
1107	return
1108}
1109
1110// ListBootstrapActions API operation for Amazon Elastic MapReduce.
1111//
1112// Provides information about the bootstrap actions associated with a cluster.
1113//
1114// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1115// with awserr.Error's Code and Message methods to get detailed information about
1116// the error.
1117//
1118// See the AWS API reference guide for Amazon Elastic MapReduce's
1119// API operation ListBootstrapActions for usage and error information.
1120//
1121// Returned Error Codes:
1122//   * ErrCodeInternalServerException "InternalServerException"
1123//   This exception occurs when there is an internal failure in the EMR service.
1124//
1125//   * ErrCodeInvalidRequestException "InvalidRequestException"
1126//   This exception occurs when there is something wrong with user input.
1127//
1128// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListBootstrapActions
1129func (c *EMR) ListBootstrapActions(input *ListBootstrapActionsInput) (*ListBootstrapActionsOutput, error) {
1130	req, out := c.ListBootstrapActionsRequest(input)
1131	return out, req.Send()
1132}
1133
1134// ListBootstrapActionsWithContext is the same as ListBootstrapActions with the addition of
1135// the ability to pass a context and additional request options.
1136//
1137// See ListBootstrapActions for details on how to use this API operation.
1138//
1139// The context must be non-nil and will be used for request cancellation. If
1140// the context is nil a panic will occur. In the future the SDK may create
1141// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1142// for more information on using Contexts.
1143func (c *EMR) ListBootstrapActionsWithContext(ctx aws.Context, input *ListBootstrapActionsInput, opts ...request.Option) (*ListBootstrapActionsOutput, error) {
1144	req, out := c.ListBootstrapActionsRequest(input)
1145	req.SetContext(ctx)
1146	req.ApplyOptions(opts...)
1147	return out, req.Send()
1148}
1149
1150// ListBootstrapActionsPages iterates over the pages of a ListBootstrapActions operation,
1151// calling the "fn" function with the response data for each page. To stop
1152// iterating, return false from the fn function.
1153//
1154// See ListBootstrapActions method for more information on how to use this operation.
1155//
1156// Note: This operation can generate multiple requests to a service.
1157//
1158//    // Example iterating over at most 3 pages of a ListBootstrapActions operation.
1159//    pageNum := 0
1160//    err := client.ListBootstrapActionsPages(params,
1161//        func(page *emr.ListBootstrapActionsOutput, lastPage bool) bool {
1162//            pageNum++
1163//            fmt.Println(page)
1164//            return pageNum <= 3
1165//        })
1166//
1167func (c *EMR) ListBootstrapActionsPages(input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool) error {
1168	return c.ListBootstrapActionsPagesWithContext(aws.BackgroundContext(), input, fn)
1169}
1170
1171// ListBootstrapActionsPagesWithContext same as ListBootstrapActionsPages except
1172// it takes a Context and allows setting request options on the pages.
1173//
1174// The context must be non-nil and will be used for request cancellation. If
1175// the context is nil a panic will occur. In the future the SDK may create
1176// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1177// for more information on using Contexts.
1178func (c *EMR) ListBootstrapActionsPagesWithContext(ctx aws.Context, input *ListBootstrapActionsInput, fn func(*ListBootstrapActionsOutput, bool) bool, opts ...request.Option) error {
1179	p := request.Pagination{
1180		NewRequest: func() (*request.Request, error) {
1181			var inCpy *ListBootstrapActionsInput
1182			if input != nil {
1183				tmp := *input
1184				inCpy = &tmp
1185			}
1186			req, _ := c.ListBootstrapActionsRequest(inCpy)
1187			req.SetContext(ctx)
1188			req.ApplyOptions(opts...)
1189			return req, nil
1190		},
1191	}
1192
1193	for p.Next() {
1194		if !fn(p.Page().(*ListBootstrapActionsOutput), !p.HasNextPage()) {
1195			break
1196		}
1197	}
1198
1199	return p.Err()
1200}
1201
1202const opListClusters = "ListClusters"
1203
1204// ListClustersRequest generates a "aws/request.Request" representing the
1205// client's request for the ListClusters operation. The "output" return
1206// value will be populated with the request's response once the request completes
1207// successfully.
1208//
1209// Use "Send" method on the returned Request to send the API call to the service.
1210// the "output" return value is not valid until after Send returns without error.
1211//
1212// See ListClusters for more information on using the ListClusters
1213// API call, and error handling.
1214//
1215// This method is useful when you want to inject custom logic or configuration
1216// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1217//
1218//
1219//    // Example sending a request using the ListClustersRequest method.
1220//    req, resp := client.ListClustersRequest(params)
1221//
1222//    err := req.Send()
1223//    if err == nil { // resp is now filled
1224//        fmt.Println(resp)
1225//    }
1226//
1227// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1228func (c *EMR) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) {
1229	op := &request.Operation{
1230		Name:       opListClusters,
1231		HTTPMethod: "POST",
1232		HTTPPath:   "/",
1233		Paginator: &request.Paginator{
1234			InputTokens:     []string{"Marker"},
1235			OutputTokens:    []string{"Marker"},
1236			LimitToken:      "",
1237			TruncationToken: "",
1238		},
1239	}
1240
1241	if input == nil {
1242		input = &ListClustersInput{}
1243	}
1244
1245	output = &ListClustersOutput{}
1246	req = c.newRequest(op, input, output)
1247	return
1248}
1249
1250// ListClusters API operation for Amazon Elastic MapReduce.
1251//
1252// Provides the status of all clusters visible to this AWS account. Allows you
1253// to filter the list of clusters based on certain criteria; for example, filtering
1254// by cluster creation date and time or by status. This call returns a maximum
1255// of 50 clusters per call, but returns a marker to track the paging of the
1256// cluster list across multiple ListClusters calls.
1257//
1258// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1259// with awserr.Error's Code and Message methods to get detailed information about
1260// the error.
1261//
1262// See the AWS API reference guide for Amazon Elastic MapReduce's
1263// API operation ListClusters for usage and error information.
1264//
1265// Returned Error Codes:
1266//   * ErrCodeInternalServerException "InternalServerException"
1267//   This exception occurs when there is an internal failure in the EMR service.
1268//
1269//   * ErrCodeInvalidRequestException "InvalidRequestException"
1270//   This exception occurs when there is something wrong with user input.
1271//
1272// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListClusters
1273func (c *EMR) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) {
1274	req, out := c.ListClustersRequest(input)
1275	return out, req.Send()
1276}
1277
1278// ListClustersWithContext is the same as ListClusters with the addition of
1279// the ability to pass a context and additional request options.
1280//
1281// See ListClusters for details on how to use this API operation.
1282//
1283// The context must be non-nil and will be used for request cancellation. If
1284// the context is nil a panic will occur. In the future the SDK may create
1285// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1286// for more information on using Contexts.
1287func (c *EMR) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) {
1288	req, out := c.ListClustersRequest(input)
1289	req.SetContext(ctx)
1290	req.ApplyOptions(opts...)
1291	return out, req.Send()
1292}
1293
1294// ListClustersPages iterates over the pages of a ListClusters operation,
1295// calling the "fn" function with the response data for each page. To stop
1296// iterating, return false from the fn function.
1297//
1298// See ListClusters method for more information on how to use this operation.
1299//
1300// Note: This operation can generate multiple requests to a service.
1301//
1302//    // Example iterating over at most 3 pages of a ListClusters operation.
1303//    pageNum := 0
1304//    err := client.ListClustersPages(params,
1305//        func(page *emr.ListClustersOutput, lastPage bool) bool {
1306//            pageNum++
1307//            fmt.Println(page)
1308//            return pageNum <= 3
1309//        })
1310//
1311func (c *EMR) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error {
1312	return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn)
1313}
1314
1315// ListClustersPagesWithContext same as ListClustersPages except
1316// it takes a Context and allows setting request options on the pages.
1317//
1318// The context must be non-nil and will be used for request cancellation. If
1319// the context is nil a panic will occur. In the future the SDK may create
1320// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1321// for more information on using Contexts.
1322func (c *EMR) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error {
1323	p := request.Pagination{
1324		NewRequest: func() (*request.Request, error) {
1325			var inCpy *ListClustersInput
1326			if input != nil {
1327				tmp := *input
1328				inCpy = &tmp
1329			}
1330			req, _ := c.ListClustersRequest(inCpy)
1331			req.SetContext(ctx)
1332			req.ApplyOptions(opts...)
1333			return req, nil
1334		},
1335	}
1336
1337	for p.Next() {
1338		if !fn(p.Page().(*ListClustersOutput), !p.HasNextPage()) {
1339			break
1340		}
1341	}
1342
1343	return p.Err()
1344}
1345
1346const opListInstanceFleets = "ListInstanceFleets"
1347
1348// ListInstanceFleetsRequest generates a "aws/request.Request" representing the
1349// client's request for the ListInstanceFleets operation. The "output" return
1350// value will be populated with the request's response once the request completes
1351// successfully.
1352//
1353// Use "Send" method on the returned Request to send the API call to the service.
1354// the "output" return value is not valid until after Send returns without error.
1355//
1356// See ListInstanceFleets for more information on using the ListInstanceFleets
1357// API call, and error handling.
1358//
1359// This method is useful when you want to inject custom logic or configuration
1360// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1361//
1362//
1363//    // Example sending a request using the ListInstanceFleetsRequest method.
1364//    req, resp := client.ListInstanceFleetsRequest(params)
1365//
1366//    err := req.Send()
1367//    if err == nil { // resp is now filled
1368//        fmt.Println(resp)
1369//    }
1370//
1371// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1372func (c *EMR) ListInstanceFleetsRequest(input *ListInstanceFleetsInput) (req *request.Request, output *ListInstanceFleetsOutput) {
1373	op := &request.Operation{
1374		Name:       opListInstanceFleets,
1375		HTTPMethod: "POST",
1376		HTTPPath:   "/",
1377		Paginator: &request.Paginator{
1378			InputTokens:     []string{"Marker"},
1379			OutputTokens:    []string{"Marker"},
1380			LimitToken:      "",
1381			TruncationToken: "",
1382		},
1383	}
1384
1385	if input == nil {
1386		input = &ListInstanceFleetsInput{}
1387	}
1388
1389	output = &ListInstanceFleetsOutput{}
1390	req = c.newRequest(op, input, output)
1391	return
1392}
1393
1394// ListInstanceFleets API operation for Amazon Elastic MapReduce.
1395//
1396// Lists all available details about the instance fleets in a cluster.
1397//
1398// The instance fleet configuration is available only in Amazon EMR versions
1399// 4.8.0 and later, excluding 5.0.x versions.
1400//
1401// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1402// with awserr.Error's Code and Message methods to get detailed information about
1403// the error.
1404//
1405// See the AWS API reference guide for Amazon Elastic MapReduce's
1406// API operation ListInstanceFleets for usage and error information.
1407//
1408// Returned Error Codes:
1409//   * ErrCodeInternalServerException "InternalServerException"
1410//   This exception occurs when there is an internal failure in the EMR service.
1411//
1412//   * ErrCodeInvalidRequestException "InvalidRequestException"
1413//   This exception occurs when there is something wrong with user input.
1414//
1415// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceFleets
1416func (c *EMR) ListInstanceFleets(input *ListInstanceFleetsInput) (*ListInstanceFleetsOutput, error) {
1417	req, out := c.ListInstanceFleetsRequest(input)
1418	return out, req.Send()
1419}
1420
1421// ListInstanceFleetsWithContext is the same as ListInstanceFleets with the addition of
1422// the ability to pass a context and additional request options.
1423//
1424// See ListInstanceFleets for details on how to use this API operation.
1425//
1426// The context must be non-nil and will be used for request cancellation. If
1427// the context is nil a panic will occur. In the future the SDK may create
1428// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1429// for more information on using Contexts.
1430func (c *EMR) ListInstanceFleetsWithContext(ctx aws.Context, input *ListInstanceFleetsInput, opts ...request.Option) (*ListInstanceFleetsOutput, error) {
1431	req, out := c.ListInstanceFleetsRequest(input)
1432	req.SetContext(ctx)
1433	req.ApplyOptions(opts...)
1434	return out, req.Send()
1435}
1436
1437// ListInstanceFleetsPages iterates over the pages of a ListInstanceFleets operation,
1438// calling the "fn" function with the response data for each page. To stop
1439// iterating, return false from the fn function.
1440//
1441// See ListInstanceFleets method for more information on how to use this operation.
1442//
1443// Note: This operation can generate multiple requests to a service.
1444//
1445//    // Example iterating over at most 3 pages of a ListInstanceFleets operation.
1446//    pageNum := 0
1447//    err := client.ListInstanceFleetsPages(params,
1448//        func(page *emr.ListInstanceFleetsOutput, lastPage bool) bool {
1449//            pageNum++
1450//            fmt.Println(page)
1451//            return pageNum <= 3
1452//        })
1453//
1454func (c *EMR) ListInstanceFleetsPages(input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool) error {
1455	return c.ListInstanceFleetsPagesWithContext(aws.BackgroundContext(), input, fn)
1456}
1457
1458// ListInstanceFleetsPagesWithContext same as ListInstanceFleetsPages except
1459// it takes a Context and allows setting request options on the pages.
1460//
1461// The context must be non-nil and will be used for request cancellation. If
1462// the context is nil a panic will occur. In the future the SDK may create
1463// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1464// for more information on using Contexts.
1465func (c *EMR) ListInstanceFleetsPagesWithContext(ctx aws.Context, input *ListInstanceFleetsInput, fn func(*ListInstanceFleetsOutput, bool) bool, opts ...request.Option) error {
1466	p := request.Pagination{
1467		NewRequest: func() (*request.Request, error) {
1468			var inCpy *ListInstanceFleetsInput
1469			if input != nil {
1470				tmp := *input
1471				inCpy = &tmp
1472			}
1473			req, _ := c.ListInstanceFleetsRequest(inCpy)
1474			req.SetContext(ctx)
1475			req.ApplyOptions(opts...)
1476			return req, nil
1477		},
1478	}
1479
1480	for p.Next() {
1481		if !fn(p.Page().(*ListInstanceFleetsOutput), !p.HasNextPage()) {
1482			break
1483		}
1484	}
1485
1486	return p.Err()
1487}
1488
1489const opListInstanceGroups = "ListInstanceGroups"
1490
1491// ListInstanceGroupsRequest generates a "aws/request.Request" representing the
1492// client's request for the ListInstanceGroups operation. The "output" return
1493// value will be populated with the request's response once the request completes
1494// successfully.
1495//
1496// Use "Send" method on the returned Request to send the API call to the service.
1497// the "output" return value is not valid until after Send returns without error.
1498//
1499// See ListInstanceGroups for more information on using the ListInstanceGroups
1500// API call, and error handling.
1501//
1502// This method is useful when you want to inject custom logic or configuration
1503// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1504//
1505//
1506//    // Example sending a request using the ListInstanceGroupsRequest method.
1507//    req, resp := client.ListInstanceGroupsRequest(params)
1508//
1509//    err := req.Send()
1510//    if err == nil { // resp is now filled
1511//        fmt.Println(resp)
1512//    }
1513//
1514// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1515func (c *EMR) ListInstanceGroupsRequest(input *ListInstanceGroupsInput) (req *request.Request, output *ListInstanceGroupsOutput) {
1516	op := &request.Operation{
1517		Name:       opListInstanceGroups,
1518		HTTPMethod: "POST",
1519		HTTPPath:   "/",
1520		Paginator: &request.Paginator{
1521			InputTokens:     []string{"Marker"},
1522			OutputTokens:    []string{"Marker"},
1523			LimitToken:      "",
1524			TruncationToken: "",
1525		},
1526	}
1527
1528	if input == nil {
1529		input = &ListInstanceGroupsInput{}
1530	}
1531
1532	output = &ListInstanceGroupsOutput{}
1533	req = c.newRequest(op, input, output)
1534	return
1535}
1536
1537// ListInstanceGroups API operation for Amazon Elastic MapReduce.
1538//
1539// Provides all available details about the instance groups in a cluster.
1540//
1541// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1542// with awserr.Error's Code and Message methods to get detailed information about
1543// the error.
1544//
1545// See the AWS API reference guide for Amazon Elastic MapReduce's
1546// API operation ListInstanceGroups for usage and error information.
1547//
1548// Returned Error Codes:
1549//   * ErrCodeInternalServerException "InternalServerException"
1550//   This exception occurs when there is an internal failure in the EMR service.
1551//
1552//   * ErrCodeInvalidRequestException "InvalidRequestException"
1553//   This exception occurs when there is something wrong with user input.
1554//
1555// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstanceGroups
1556func (c *EMR) ListInstanceGroups(input *ListInstanceGroupsInput) (*ListInstanceGroupsOutput, error) {
1557	req, out := c.ListInstanceGroupsRequest(input)
1558	return out, req.Send()
1559}
1560
1561// ListInstanceGroupsWithContext is the same as ListInstanceGroups with the addition of
1562// the ability to pass a context and additional request options.
1563//
1564// See ListInstanceGroups for details on how to use this API operation.
1565//
1566// The context must be non-nil and will be used for request cancellation. If
1567// the context is nil a panic will occur. In the future the SDK may create
1568// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1569// for more information on using Contexts.
1570func (c *EMR) ListInstanceGroupsWithContext(ctx aws.Context, input *ListInstanceGroupsInput, opts ...request.Option) (*ListInstanceGroupsOutput, error) {
1571	req, out := c.ListInstanceGroupsRequest(input)
1572	req.SetContext(ctx)
1573	req.ApplyOptions(opts...)
1574	return out, req.Send()
1575}
1576
1577// ListInstanceGroupsPages iterates over the pages of a ListInstanceGroups operation,
1578// calling the "fn" function with the response data for each page. To stop
1579// iterating, return false from the fn function.
1580//
1581// See ListInstanceGroups method for more information on how to use this operation.
1582//
1583// Note: This operation can generate multiple requests to a service.
1584//
1585//    // Example iterating over at most 3 pages of a ListInstanceGroups operation.
1586//    pageNum := 0
1587//    err := client.ListInstanceGroupsPages(params,
1588//        func(page *emr.ListInstanceGroupsOutput, lastPage bool) bool {
1589//            pageNum++
1590//            fmt.Println(page)
1591//            return pageNum <= 3
1592//        })
1593//
1594func (c *EMR) ListInstanceGroupsPages(input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool) error {
1595	return c.ListInstanceGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
1596}
1597
1598// ListInstanceGroupsPagesWithContext same as ListInstanceGroupsPages except
1599// it takes a Context and allows setting request options on the pages.
1600//
1601// The context must be non-nil and will be used for request cancellation. If
1602// the context is nil a panic will occur. In the future the SDK may create
1603// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1604// for more information on using Contexts.
1605func (c *EMR) ListInstanceGroupsPagesWithContext(ctx aws.Context, input *ListInstanceGroupsInput, fn func(*ListInstanceGroupsOutput, bool) bool, opts ...request.Option) error {
1606	p := request.Pagination{
1607		NewRequest: func() (*request.Request, error) {
1608			var inCpy *ListInstanceGroupsInput
1609			if input != nil {
1610				tmp := *input
1611				inCpy = &tmp
1612			}
1613			req, _ := c.ListInstanceGroupsRequest(inCpy)
1614			req.SetContext(ctx)
1615			req.ApplyOptions(opts...)
1616			return req, nil
1617		},
1618	}
1619
1620	for p.Next() {
1621		if !fn(p.Page().(*ListInstanceGroupsOutput), !p.HasNextPage()) {
1622			break
1623		}
1624	}
1625
1626	return p.Err()
1627}
1628
1629const opListInstances = "ListInstances"
1630
1631// ListInstancesRequest generates a "aws/request.Request" representing the
1632// client's request for the ListInstances operation. The "output" return
1633// value will be populated with the request's response once the request completes
1634// successfully.
1635//
1636// Use "Send" method on the returned Request to send the API call to the service.
1637// the "output" return value is not valid until after Send returns without error.
1638//
1639// See ListInstances for more information on using the ListInstances
1640// API call, and error handling.
1641//
1642// This method is useful when you want to inject custom logic or configuration
1643// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1644//
1645//
1646//    // Example sending a request using the ListInstancesRequest method.
1647//    req, resp := client.ListInstancesRequest(params)
1648//
1649//    err := req.Send()
1650//    if err == nil { // resp is now filled
1651//        fmt.Println(resp)
1652//    }
1653//
1654// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1655func (c *EMR) ListInstancesRequest(input *ListInstancesInput) (req *request.Request, output *ListInstancesOutput) {
1656	op := &request.Operation{
1657		Name:       opListInstances,
1658		HTTPMethod: "POST",
1659		HTTPPath:   "/",
1660		Paginator: &request.Paginator{
1661			InputTokens:     []string{"Marker"},
1662			OutputTokens:    []string{"Marker"},
1663			LimitToken:      "",
1664			TruncationToken: "",
1665		},
1666	}
1667
1668	if input == nil {
1669		input = &ListInstancesInput{}
1670	}
1671
1672	output = &ListInstancesOutput{}
1673	req = c.newRequest(op, input, output)
1674	return
1675}
1676
1677// ListInstances API operation for Amazon Elastic MapReduce.
1678//
1679// Provides information for all active EC2 instances and EC2 instances terminated
1680// in the last 30 days, up to a maximum of 2,000. EC2 instances in any of the
1681// following states are considered active: AWAITING_FULFILLMENT, PROVISIONING,
1682// BOOTSTRAPPING, RUNNING.
1683//
1684// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1685// with awserr.Error's Code and Message methods to get detailed information about
1686// the error.
1687//
1688// See the AWS API reference guide for Amazon Elastic MapReduce's
1689// API operation ListInstances for usage and error information.
1690//
1691// Returned Error Codes:
1692//   * ErrCodeInternalServerException "InternalServerException"
1693//   This exception occurs when there is an internal failure in the EMR service.
1694//
1695//   * ErrCodeInvalidRequestException "InvalidRequestException"
1696//   This exception occurs when there is something wrong with user input.
1697//
1698// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListInstances
1699func (c *EMR) ListInstances(input *ListInstancesInput) (*ListInstancesOutput, error) {
1700	req, out := c.ListInstancesRequest(input)
1701	return out, req.Send()
1702}
1703
1704// ListInstancesWithContext is the same as ListInstances with the addition of
1705// the ability to pass a context and additional request options.
1706//
1707// See ListInstances for details on how to use this API operation.
1708//
1709// The context must be non-nil and will be used for request cancellation. If
1710// the context is nil a panic will occur. In the future the SDK may create
1711// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1712// for more information on using Contexts.
1713func (c *EMR) ListInstancesWithContext(ctx aws.Context, input *ListInstancesInput, opts ...request.Option) (*ListInstancesOutput, error) {
1714	req, out := c.ListInstancesRequest(input)
1715	req.SetContext(ctx)
1716	req.ApplyOptions(opts...)
1717	return out, req.Send()
1718}
1719
1720// ListInstancesPages iterates over the pages of a ListInstances operation,
1721// calling the "fn" function with the response data for each page. To stop
1722// iterating, return false from the fn function.
1723//
1724// See ListInstances method for more information on how to use this operation.
1725//
1726// Note: This operation can generate multiple requests to a service.
1727//
1728//    // Example iterating over at most 3 pages of a ListInstances operation.
1729//    pageNum := 0
1730//    err := client.ListInstancesPages(params,
1731//        func(page *emr.ListInstancesOutput, lastPage bool) bool {
1732//            pageNum++
1733//            fmt.Println(page)
1734//            return pageNum <= 3
1735//        })
1736//
1737func (c *EMR) ListInstancesPages(input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool) error {
1738	return c.ListInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
1739}
1740
1741// ListInstancesPagesWithContext same as ListInstancesPages except
1742// it takes a Context and allows setting request options on the pages.
1743//
1744// The context must be non-nil and will be used for request cancellation. If
1745// the context is nil a panic will occur. In the future the SDK may create
1746// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1747// for more information on using Contexts.
1748func (c *EMR) ListInstancesPagesWithContext(ctx aws.Context, input *ListInstancesInput, fn func(*ListInstancesOutput, bool) bool, opts ...request.Option) error {
1749	p := request.Pagination{
1750		NewRequest: func() (*request.Request, error) {
1751			var inCpy *ListInstancesInput
1752			if input != nil {
1753				tmp := *input
1754				inCpy = &tmp
1755			}
1756			req, _ := c.ListInstancesRequest(inCpy)
1757			req.SetContext(ctx)
1758			req.ApplyOptions(opts...)
1759			return req, nil
1760		},
1761	}
1762
1763	for p.Next() {
1764		if !fn(p.Page().(*ListInstancesOutput), !p.HasNextPage()) {
1765			break
1766		}
1767	}
1768
1769	return p.Err()
1770}
1771
1772const opListSecurityConfigurations = "ListSecurityConfigurations"
1773
1774// ListSecurityConfigurationsRequest generates a "aws/request.Request" representing the
1775// client's request for the ListSecurityConfigurations operation. The "output" return
1776// value will be populated with the request's response once the request completes
1777// successfully.
1778//
1779// Use "Send" method on the returned Request to send the API call to the service.
1780// the "output" return value is not valid until after Send returns without error.
1781//
1782// See ListSecurityConfigurations for more information on using the ListSecurityConfigurations
1783// API call, and error handling.
1784//
1785// This method is useful when you want to inject custom logic or configuration
1786// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1787//
1788//
1789//    // Example sending a request using the ListSecurityConfigurationsRequest method.
1790//    req, resp := client.ListSecurityConfigurationsRequest(params)
1791//
1792//    err := req.Send()
1793//    if err == nil { // resp is now filled
1794//        fmt.Println(resp)
1795//    }
1796//
1797// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1798func (c *EMR) ListSecurityConfigurationsRequest(input *ListSecurityConfigurationsInput) (req *request.Request, output *ListSecurityConfigurationsOutput) {
1799	op := &request.Operation{
1800		Name:       opListSecurityConfigurations,
1801		HTTPMethod: "POST",
1802		HTTPPath:   "/",
1803		Paginator: &request.Paginator{
1804			InputTokens:     []string{"Marker"},
1805			OutputTokens:    []string{"Marker"},
1806			LimitToken:      "",
1807			TruncationToken: "",
1808		},
1809	}
1810
1811	if input == nil {
1812		input = &ListSecurityConfigurationsInput{}
1813	}
1814
1815	output = &ListSecurityConfigurationsOutput{}
1816	req = c.newRequest(op, input, output)
1817	return
1818}
1819
1820// ListSecurityConfigurations API operation for Amazon Elastic MapReduce.
1821//
1822// Lists all the security configurations visible to this account, providing
1823// their creation dates and times, and their names. This call returns a maximum
1824// of 50 clusters per call, but returns a marker to track the paging of the
1825// cluster list across multiple ListSecurityConfigurations calls.
1826//
1827// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1828// with awserr.Error's Code and Message methods to get detailed information about
1829// the error.
1830//
1831// See the AWS API reference guide for Amazon Elastic MapReduce's
1832// API operation ListSecurityConfigurations for usage and error information.
1833//
1834// Returned Error Codes:
1835//   * ErrCodeInternalServerException "InternalServerException"
1836//   This exception occurs when there is an internal failure in the EMR service.
1837//
1838//   * ErrCodeInvalidRequestException "InvalidRequestException"
1839//   This exception occurs when there is something wrong with user input.
1840//
1841// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSecurityConfigurations
1842func (c *EMR) ListSecurityConfigurations(input *ListSecurityConfigurationsInput) (*ListSecurityConfigurationsOutput, error) {
1843	req, out := c.ListSecurityConfigurationsRequest(input)
1844	return out, req.Send()
1845}
1846
1847// ListSecurityConfigurationsWithContext is the same as ListSecurityConfigurations with the addition of
1848// the ability to pass a context and additional request options.
1849//
1850// See ListSecurityConfigurations for details on how to use this API operation.
1851//
1852// The context must be non-nil and will be used for request cancellation. If
1853// the context is nil a panic will occur. In the future the SDK may create
1854// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1855// for more information on using Contexts.
1856func (c *EMR) ListSecurityConfigurationsWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, opts ...request.Option) (*ListSecurityConfigurationsOutput, error) {
1857	req, out := c.ListSecurityConfigurationsRequest(input)
1858	req.SetContext(ctx)
1859	req.ApplyOptions(opts...)
1860	return out, req.Send()
1861}
1862
1863// ListSecurityConfigurationsPages iterates over the pages of a ListSecurityConfigurations operation,
1864// calling the "fn" function with the response data for each page. To stop
1865// iterating, return false from the fn function.
1866//
1867// See ListSecurityConfigurations method for more information on how to use this operation.
1868//
1869// Note: This operation can generate multiple requests to a service.
1870//
1871//    // Example iterating over at most 3 pages of a ListSecurityConfigurations operation.
1872//    pageNum := 0
1873//    err := client.ListSecurityConfigurationsPages(params,
1874//        func(page *emr.ListSecurityConfigurationsOutput, lastPage bool) bool {
1875//            pageNum++
1876//            fmt.Println(page)
1877//            return pageNum <= 3
1878//        })
1879//
1880func (c *EMR) ListSecurityConfigurationsPages(input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool) error {
1881	return c.ListSecurityConfigurationsPagesWithContext(aws.BackgroundContext(), input, fn)
1882}
1883
1884// ListSecurityConfigurationsPagesWithContext same as ListSecurityConfigurationsPages except
1885// it takes a Context and allows setting request options on the pages.
1886//
1887// The context must be non-nil and will be used for request cancellation. If
1888// the context is nil a panic will occur. In the future the SDK may create
1889// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1890// for more information on using Contexts.
1891func (c *EMR) ListSecurityConfigurationsPagesWithContext(ctx aws.Context, input *ListSecurityConfigurationsInput, fn func(*ListSecurityConfigurationsOutput, bool) bool, opts ...request.Option) error {
1892	p := request.Pagination{
1893		NewRequest: func() (*request.Request, error) {
1894			var inCpy *ListSecurityConfigurationsInput
1895			if input != nil {
1896				tmp := *input
1897				inCpy = &tmp
1898			}
1899			req, _ := c.ListSecurityConfigurationsRequest(inCpy)
1900			req.SetContext(ctx)
1901			req.ApplyOptions(opts...)
1902			return req, nil
1903		},
1904	}
1905
1906	for p.Next() {
1907		if !fn(p.Page().(*ListSecurityConfigurationsOutput), !p.HasNextPage()) {
1908			break
1909		}
1910	}
1911
1912	return p.Err()
1913}
1914
1915const opListSteps = "ListSteps"
1916
1917// ListStepsRequest generates a "aws/request.Request" representing the
1918// client's request for the ListSteps operation. The "output" return
1919// value will be populated with the request's response once the request completes
1920// successfully.
1921//
1922// Use "Send" method on the returned Request to send the API call to the service.
1923// the "output" return value is not valid until after Send returns without error.
1924//
1925// See ListSteps for more information on using the ListSteps
1926// API call, and error handling.
1927//
1928// This method is useful when you want to inject custom logic or configuration
1929// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1930//
1931//
1932//    // Example sending a request using the ListStepsRequest method.
1933//    req, resp := client.ListStepsRequest(params)
1934//
1935//    err := req.Send()
1936//    if err == nil { // resp is now filled
1937//        fmt.Println(resp)
1938//    }
1939//
1940// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
1941func (c *EMR) ListStepsRequest(input *ListStepsInput) (req *request.Request, output *ListStepsOutput) {
1942	op := &request.Operation{
1943		Name:       opListSteps,
1944		HTTPMethod: "POST",
1945		HTTPPath:   "/",
1946		Paginator: &request.Paginator{
1947			InputTokens:     []string{"Marker"},
1948			OutputTokens:    []string{"Marker"},
1949			LimitToken:      "",
1950			TruncationToken: "",
1951		},
1952	}
1953
1954	if input == nil {
1955		input = &ListStepsInput{}
1956	}
1957
1958	output = &ListStepsOutput{}
1959	req = c.newRequest(op, input, output)
1960	return
1961}
1962
1963// ListSteps API operation for Amazon Elastic MapReduce.
1964//
1965// Provides a list of steps for the cluster in reverse order unless you specify
1966// stepIds with the request of filter by StepStates. You can specify a maximum
1967// of ten stepIDs.
1968//
1969// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1970// with awserr.Error's Code and Message methods to get detailed information about
1971// the error.
1972//
1973// See the AWS API reference guide for Amazon Elastic MapReduce's
1974// API operation ListSteps for usage and error information.
1975//
1976// Returned Error Codes:
1977//   * ErrCodeInternalServerException "InternalServerException"
1978//   This exception occurs when there is an internal failure in the EMR service.
1979//
1980//   * ErrCodeInvalidRequestException "InvalidRequestException"
1981//   This exception occurs when there is something wrong with user input.
1982//
1983// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ListSteps
1984func (c *EMR) ListSteps(input *ListStepsInput) (*ListStepsOutput, error) {
1985	req, out := c.ListStepsRequest(input)
1986	return out, req.Send()
1987}
1988
1989// ListStepsWithContext is the same as ListSteps with the addition of
1990// the ability to pass a context and additional request options.
1991//
1992// See ListSteps for details on how to use this API operation.
1993//
1994// The context must be non-nil and will be used for request cancellation. If
1995// the context is nil a panic will occur. In the future the SDK may create
1996// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1997// for more information on using Contexts.
1998func (c *EMR) ListStepsWithContext(ctx aws.Context, input *ListStepsInput, opts ...request.Option) (*ListStepsOutput, error) {
1999	req, out := c.ListStepsRequest(input)
2000	req.SetContext(ctx)
2001	req.ApplyOptions(opts...)
2002	return out, req.Send()
2003}
2004
2005// ListStepsPages iterates over the pages of a ListSteps operation,
2006// calling the "fn" function with the response data for each page. To stop
2007// iterating, return false from the fn function.
2008//
2009// See ListSteps method for more information on how to use this operation.
2010//
2011// Note: This operation can generate multiple requests to a service.
2012//
2013//    // Example iterating over at most 3 pages of a ListSteps operation.
2014//    pageNum := 0
2015//    err := client.ListStepsPages(params,
2016//        func(page *emr.ListStepsOutput, lastPage bool) bool {
2017//            pageNum++
2018//            fmt.Println(page)
2019//            return pageNum <= 3
2020//        })
2021//
2022func (c *EMR) ListStepsPages(input *ListStepsInput, fn func(*ListStepsOutput, bool) bool) error {
2023	return c.ListStepsPagesWithContext(aws.BackgroundContext(), input, fn)
2024}
2025
2026// ListStepsPagesWithContext same as ListStepsPages except
2027// it takes a Context and allows setting request options on the pages.
2028//
2029// The context must be non-nil and will be used for request cancellation. If
2030// the context is nil a panic will occur. In the future the SDK may create
2031// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2032// for more information on using Contexts.
2033func (c *EMR) ListStepsPagesWithContext(ctx aws.Context, input *ListStepsInput, fn func(*ListStepsOutput, bool) bool, opts ...request.Option) error {
2034	p := request.Pagination{
2035		NewRequest: func() (*request.Request, error) {
2036			var inCpy *ListStepsInput
2037			if input != nil {
2038				tmp := *input
2039				inCpy = &tmp
2040			}
2041			req, _ := c.ListStepsRequest(inCpy)
2042			req.SetContext(ctx)
2043			req.ApplyOptions(opts...)
2044			return req, nil
2045		},
2046	}
2047
2048	for p.Next() {
2049		if !fn(p.Page().(*ListStepsOutput), !p.HasNextPage()) {
2050			break
2051		}
2052	}
2053
2054	return p.Err()
2055}
2056
2057const opModifyCluster = "ModifyCluster"
2058
2059// ModifyClusterRequest generates a "aws/request.Request" representing the
2060// client's request for the ModifyCluster operation. The "output" return
2061// value will be populated with the request's response once the request completes
2062// successfully.
2063//
2064// Use "Send" method on the returned Request to send the API call to the service.
2065// the "output" return value is not valid until after Send returns without error.
2066//
2067// See ModifyCluster for more information on using the ModifyCluster
2068// API call, and error handling.
2069//
2070// This method is useful when you want to inject custom logic or configuration
2071// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2072//
2073//
2074//    // Example sending a request using the ModifyClusterRequest method.
2075//    req, resp := client.ModifyClusterRequest(params)
2076//
2077//    err := req.Send()
2078//    if err == nil { // resp is now filled
2079//        fmt.Println(resp)
2080//    }
2081//
2082// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster
2083func (c *EMR) ModifyClusterRequest(input *ModifyClusterInput) (req *request.Request, output *ModifyClusterOutput) {
2084	op := &request.Operation{
2085		Name:       opModifyCluster,
2086		HTTPMethod: "POST",
2087		HTTPPath:   "/",
2088	}
2089
2090	if input == nil {
2091		input = &ModifyClusterInput{}
2092	}
2093
2094	output = &ModifyClusterOutput{}
2095	req = c.newRequest(op, input, output)
2096	return
2097}
2098
2099// ModifyCluster API operation for Amazon Elastic MapReduce.
2100//
2101// Modifies the number of steps that can be executed concurrently for the cluster
2102// specified using ClusterID.
2103//
2104// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2105// with awserr.Error's Code and Message methods to get detailed information about
2106// the error.
2107//
2108// See the AWS API reference guide for Amazon Elastic MapReduce's
2109// API operation ModifyCluster for usage and error information.
2110//
2111// Returned Error Codes:
2112//   * ErrCodeInternalServerError "InternalServerError"
2113//   Indicates that an error occurred while processing the request and that the
2114//   request was not completed.
2115//
2116//   * ErrCodeInvalidRequestException "InvalidRequestException"
2117//   This exception occurs when there is something wrong with user input.
2118//
2119// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyCluster
2120func (c *EMR) ModifyCluster(input *ModifyClusterInput) (*ModifyClusterOutput, error) {
2121	req, out := c.ModifyClusterRequest(input)
2122	return out, req.Send()
2123}
2124
2125// ModifyClusterWithContext is the same as ModifyCluster with the addition of
2126// the ability to pass a context and additional request options.
2127//
2128// See ModifyCluster for details on how to use this API operation.
2129//
2130// The context must be non-nil and will be used for request cancellation. If
2131// the context is nil a panic will occur. In the future the SDK may create
2132// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2133// for more information on using Contexts.
2134func (c *EMR) ModifyClusterWithContext(ctx aws.Context, input *ModifyClusterInput, opts ...request.Option) (*ModifyClusterOutput, error) {
2135	req, out := c.ModifyClusterRequest(input)
2136	req.SetContext(ctx)
2137	req.ApplyOptions(opts...)
2138	return out, req.Send()
2139}
2140
2141const opModifyInstanceFleet = "ModifyInstanceFleet"
2142
2143// ModifyInstanceFleetRequest generates a "aws/request.Request" representing the
2144// client's request for the ModifyInstanceFleet operation. The "output" return
2145// value will be populated with the request's response once the request completes
2146// successfully.
2147//
2148// Use "Send" method on the returned Request to send the API call to the service.
2149// the "output" return value is not valid until after Send returns without error.
2150//
2151// See ModifyInstanceFleet for more information on using the ModifyInstanceFleet
2152// API call, and error handling.
2153//
2154// This method is useful when you want to inject custom logic or configuration
2155// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2156//
2157//
2158//    // Example sending a request using the ModifyInstanceFleetRequest method.
2159//    req, resp := client.ModifyInstanceFleetRequest(params)
2160//
2161//    err := req.Send()
2162//    if err == nil { // resp is now filled
2163//        fmt.Println(resp)
2164//    }
2165//
2166// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2167func (c *EMR) ModifyInstanceFleetRequest(input *ModifyInstanceFleetInput) (req *request.Request, output *ModifyInstanceFleetOutput) {
2168	op := &request.Operation{
2169		Name:       opModifyInstanceFleet,
2170		HTTPMethod: "POST",
2171		HTTPPath:   "/",
2172	}
2173
2174	if input == nil {
2175		input = &ModifyInstanceFleetInput{}
2176	}
2177
2178	output = &ModifyInstanceFleetOutput{}
2179	req = c.newRequest(op, input, output)
2180	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2181	return
2182}
2183
2184// ModifyInstanceFleet API operation for Amazon Elastic MapReduce.
2185//
2186// Modifies the target On-Demand and target Spot capacities for the instance
2187// fleet with the specified InstanceFleetID within the cluster specified using
2188// ClusterID. The call either succeeds or fails atomically.
2189//
2190// The instance fleet configuration is available only in Amazon EMR versions
2191// 4.8.0 and later, excluding 5.0.x versions.
2192//
2193// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2194// with awserr.Error's Code and Message methods to get detailed information about
2195// the error.
2196//
2197// See the AWS API reference guide for Amazon Elastic MapReduce's
2198// API operation ModifyInstanceFleet for usage and error information.
2199//
2200// Returned Error Codes:
2201//   * ErrCodeInternalServerException "InternalServerException"
2202//   This exception occurs when there is an internal failure in the EMR service.
2203//
2204//   * ErrCodeInvalidRequestException "InvalidRequestException"
2205//   This exception occurs when there is something wrong with user input.
2206//
2207// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceFleet
2208func (c *EMR) ModifyInstanceFleet(input *ModifyInstanceFleetInput) (*ModifyInstanceFleetOutput, error) {
2209	req, out := c.ModifyInstanceFleetRequest(input)
2210	return out, req.Send()
2211}
2212
2213// ModifyInstanceFleetWithContext is the same as ModifyInstanceFleet with the addition of
2214// the ability to pass a context and additional request options.
2215//
2216// See ModifyInstanceFleet for details on how to use this API operation.
2217//
2218// The context must be non-nil and will be used for request cancellation. If
2219// the context is nil a panic will occur. In the future the SDK may create
2220// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2221// for more information on using Contexts.
2222func (c *EMR) ModifyInstanceFleetWithContext(ctx aws.Context, input *ModifyInstanceFleetInput, opts ...request.Option) (*ModifyInstanceFleetOutput, error) {
2223	req, out := c.ModifyInstanceFleetRequest(input)
2224	req.SetContext(ctx)
2225	req.ApplyOptions(opts...)
2226	return out, req.Send()
2227}
2228
2229const opModifyInstanceGroups = "ModifyInstanceGroups"
2230
2231// ModifyInstanceGroupsRequest generates a "aws/request.Request" representing the
2232// client's request for the ModifyInstanceGroups operation. The "output" return
2233// value will be populated with the request's response once the request completes
2234// successfully.
2235//
2236// Use "Send" method on the returned Request to send the API call to the service.
2237// the "output" return value is not valid until after Send returns without error.
2238//
2239// See ModifyInstanceGroups for more information on using the ModifyInstanceGroups
2240// API call, and error handling.
2241//
2242// This method is useful when you want to inject custom logic or configuration
2243// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2244//
2245//
2246//    // Example sending a request using the ModifyInstanceGroupsRequest method.
2247//    req, resp := client.ModifyInstanceGroupsRequest(params)
2248//
2249//    err := req.Send()
2250//    if err == nil { // resp is now filled
2251//        fmt.Println(resp)
2252//    }
2253//
2254// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2255func (c *EMR) ModifyInstanceGroupsRequest(input *ModifyInstanceGroupsInput) (req *request.Request, output *ModifyInstanceGroupsOutput) {
2256	op := &request.Operation{
2257		Name:       opModifyInstanceGroups,
2258		HTTPMethod: "POST",
2259		HTTPPath:   "/",
2260	}
2261
2262	if input == nil {
2263		input = &ModifyInstanceGroupsInput{}
2264	}
2265
2266	output = &ModifyInstanceGroupsOutput{}
2267	req = c.newRequest(op, input, output)
2268	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2269	return
2270}
2271
2272// ModifyInstanceGroups API operation for Amazon Elastic MapReduce.
2273//
2274// ModifyInstanceGroups modifies the number of nodes and configuration settings
2275// of an instance group. The input parameters include the new target instance
2276// count for the group and the instance group ID. The call will either succeed
2277// or fail atomically.
2278//
2279// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2280// with awserr.Error's Code and Message methods to get detailed information about
2281// the error.
2282//
2283// See the AWS API reference guide for Amazon Elastic MapReduce's
2284// API operation ModifyInstanceGroups for usage and error information.
2285//
2286// Returned Error Codes:
2287//   * ErrCodeInternalServerError "InternalServerError"
2288//   Indicates that an error occurred while processing the request and that the
2289//   request was not completed.
2290//
2291// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/ModifyInstanceGroups
2292func (c *EMR) ModifyInstanceGroups(input *ModifyInstanceGroupsInput) (*ModifyInstanceGroupsOutput, error) {
2293	req, out := c.ModifyInstanceGroupsRequest(input)
2294	return out, req.Send()
2295}
2296
2297// ModifyInstanceGroupsWithContext is the same as ModifyInstanceGroups with the addition of
2298// the ability to pass a context and additional request options.
2299//
2300// See ModifyInstanceGroups for details on how to use this API operation.
2301//
2302// The context must be non-nil and will be used for request cancellation. If
2303// the context is nil a panic will occur. In the future the SDK may create
2304// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2305// for more information on using Contexts.
2306func (c *EMR) ModifyInstanceGroupsWithContext(ctx aws.Context, input *ModifyInstanceGroupsInput, opts ...request.Option) (*ModifyInstanceGroupsOutput, error) {
2307	req, out := c.ModifyInstanceGroupsRequest(input)
2308	req.SetContext(ctx)
2309	req.ApplyOptions(opts...)
2310	return out, req.Send()
2311}
2312
2313const opPutAutoScalingPolicy = "PutAutoScalingPolicy"
2314
2315// PutAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2316// client's request for the PutAutoScalingPolicy operation. The "output" return
2317// value will be populated with the request's response once the request completes
2318// successfully.
2319//
2320// Use "Send" method on the returned Request to send the API call to the service.
2321// the "output" return value is not valid until after Send returns without error.
2322//
2323// See PutAutoScalingPolicy for more information on using the PutAutoScalingPolicy
2324// API call, and error handling.
2325//
2326// This method is useful when you want to inject custom logic or configuration
2327// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2328//
2329//
2330//    // Example sending a request using the PutAutoScalingPolicyRequest method.
2331//    req, resp := client.PutAutoScalingPolicyRequest(params)
2332//
2333//    err := req.Send()
2334//    if err == nil { // resp is now filled
2335//        fmt.Println(resp)
2336//    }
2337//
2338// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2339func (c *EMR) PutAutoScalingPolicyRequest(input *PutAutoScalingPolicyInput) (req *request.Request, output *PutAutoScalingPolicyOutput) {
2340	op := &request.Operation{
2341		Name:       opPutAutoScalingPolicy,
2342		HTTPMethod: "POST",
2343		HTTPPath:   "/",
2344	}
2345
2346	if input == nil {
2347		input = &PutAutoScalingPolicyInput{}
2348	}
2349
2350	output = &PutAutoScalingPolicyOutput{}
2351	req = c.newRequest(op, input, output)
2352	return
2353}
2354
2355// PutAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2356//
2357// Creates or updates an automatic scaling policy for a core instance group
2358// or task instance group in an Amazon EMR cluster. The automatic scaling policy
2359// defines how an instance group dynamically adds and terminates EC2 instances
2360// in response to the value of a CloudWatch metric.
2361//
2362// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2363// with awserr.Error's Code and Message methods to get detailed information about
2364// the error.
2365//
2366// See the AWS API reference guide for Amazon Elastic MapReduce's
2367// API operation PutAutoScalingPolicy for usage and error information.
2368// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutAutoScalingPolicy
2369func (c *EMR) PutAutoScalingPolicy(input *PutAutoScalingPolicyInput) (*PutAutoScalingPolicyOutput, error) {
2370	req, out := c.PutAutoScalingPolicyRequest(input)
2371	return out, req.Send()
2372}
2373
2374// PutAutoScalingPolicyWithContext is the same as PutAutoScalingPolicy with the addition of
2375// the ability to pass a context and additional request options.
2376//
2377// See PutAutoScalingPolicy for details on how to use this API operation.
2378//
2379// The context must be non-nil and will be used for request cancellation. If
2380// the context is nil a panic will occur. In the future the SDK may create
2381// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2382// for more information on using Contexts.
2383func (c *EMR) PutAutoScalingPolicyWithContext(ctx aws.Context, input *PutAutoScalingPolicyInput, opts ...request.Option) (*PutAutoScalingPolicyOutput, error) {
2384	req, out := c.PutAutoScalingPolicyRequest(input)
2385	req.SetContext(ctx)
2386	req.ApplyOptions(opts...)
2387	return out, req.Send()
2388}
2389
2390const opPutBlockPublicAccessConfiguration = "PutBlockPublicAccessConfiguration"
2391
2392// PutBlockPublicAccessConfigurationRequest generates a "aws/request.Request" representing the
2393// client's request for the PutBlockPublicAccessConfiguration operation. The "output" return
2394// value will be populated with the request's response once the request completes
2395// successfully.
2396//
2397// Use "Send" method on the returned Request to send the API call to the service.
2398// the "output" return value is not valid until after Send returns without error.
2399//
2400// See PutBlockPublicAccessConfiguration for more information on using the PutBlockPublicAccessConfiguration
2401// API call, and error handling.
2402//
2403// This method is useful when you want to inject custom logic or configuration
2404// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2405//
2406//
2407//    // Example sending a request using the PutBlockPublicAccessConfigurationRequest method.
2408//    req, resp := client.PutBlockPublicAccessConfigurationRequest(params)
2409//
2410//    err := req.Send()
2411//    if err == nil { // resp is now filled
2412//        fmt.Println(resp)
2413//    }
2414//
2415// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2416func (c *EMR) PutBlockPublicAccessConfigurationRequest(input *PutBlockPublicAccessConfigurationInput) (req *request.Request, output *PutBlockPublicAccessConfigurationOutput) {
2417	op := &request.Operation{
2418		Name:       opPutBlockPublicAccessConfiguration,
2419		HTTPMethod: "POST",
2420		HTTPPath:   "/",
2421	}
2422
2423	if input == nil {
2424		input = &PutBlockPublicAccessConfigurationInput{}
2425	}
2426
2427	output = &PutBlockPublicAccessConfigurationOutput{}
2428	req = c.newRequest(op, input, output)
2429	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2430	return
2431}
2432
2433// PutBlockPublicAccessConfiguration API operation for Amazon Elastic MapReduce.
2434//
2435// Creates or updates an Amazon EMR block public access configuration for your
2436// AWS account in the current Region. For more information see Configure Block
2437// Public Access for Amazon EMR (https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html)
2438// in the Amazon EMR Management Guide.
2439//
2440// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2441// with awserr.Error's Code and Message methods to get detailed information about
2442// the error.
2443//
2444// See the AWS API reference guide for Amazon Elastic MapReduce's
2445// API operation PutBlockPublicAccessConfiguration for usage and error information.
2446//
2447// Returned Error Codes:
2448//   * ErrCodeInternalServerException "InternalServerException"
2449//   This exception occurs when there is an internal failure in the EMR service.
2450//
2451//   * ErrCodeInvalidRequestException "InvalidRequestException"
2452//   This exception occurs when there is something wrong with user input.
2453//
2454// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/PutBlockPublicAccessConfiguration
2455func (c *EMR) PutBlockPublicAccessConfiguration(input *PutBlockPublicAccessConfigurationInput) (*PutBlockPublicAccessConfigurationOutput, error) {
2456	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2457	return out, req.Send()
2458}
2459
2460// PutBlockPublicAccessConfigurationWithContext is the same as PutBlockPublicAccessConfiguration with the addition of
2461// the ability to pass a context and additional request options.
2462//
2463// See PutBlockPublicAccessConfiguration for details on how to use this API operation.
2464//
2465// The context must be non-nil and will be used for request cancellation. If
2466// the context is nil a panic will occur. In the future the SDK may create
2467// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2468// for more information on using Contexts.
2469func (c *EMR) PutBlockPublicAccessConfigurationWithContext(ctx aws.Context, input *PutBlockPublicAccessConfigurationInput, opts ...request.Option) (*PutBlockPublicAccessConfigurationOutput, error) {
2470	req, out := c.PutBlockPublicAccessConfigurationRequest(input)
2471	req.SetContext(ctx)
2472	req.ApplyOptions(opts...)
2473	return out, req.Send()
2474}
2475
2476const opRemoveAutoScalingPolicy = "RemoveAutoScalingPolicy"
2477
2478// RemoveAutoScalingPolicyRequest generates a "aws/request.Request" representing the
2479// client's request for the RemoveAutoScalingPolicy operation. The "output" return
2480// value will be populated with the request's response once the request completes
2481// successfully.
2482//
2483// Use "Send" method on the returned Request to send the API call to the service.
2484// the "output" return value is not valid until after Send returns without error.
2485//
2486// See RemoveAutoScalingPolicy for more information on using the RemoveAutoScalingPolicy
2487// API call, and error handling.
2488//
2489// This method is useful when you want to inject custom logic or configuration
2490// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2491//
2492//
2493//    // Example sending a request using the RemoveAutoScalingPolicyRequest method.
2494//    req, resp := client.RemoveAutoScalingPolicyRequest(params)
2495//
2496//    err := req.Send()
2497//    if err == nil { // resp is now filled
2498//        fmt.Println(resp)
2499//    }
2500//
2501// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2502func (c *EMR) RemoveAutoScalingPolicyRequest(input *RemoveAutoScalingPolicyInput) (req *request.Request, output *RemoveAutoScalingPolicyOutput) {
2503	op := &request.Operation{
2504		Name:       opRemoveAutoScalingPolicy,
2505		HTTPMethod: "POST",
2506		HTTPPath:   "/",
2507	}
2508
2509	if input == nil {
2510		input = &RemoveAutoScalingPolicyInput{}
2511	}
2512
2513	output = &RemoveAutoScalingPolicyOutput{}
2514	req = c.newRequest(op, input, output)
2515	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2516	return
2517}
2518
2519// RemoveAutoScalingPolicy API operation for Amazon Elastic MapReduce.
2520//
2521// Removes an automatic scaling policy from a specified instance group within
2522// an EMR cluster.
2523//
2524// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2525// with awserr.Error's Code and Message methods to get detailed information about
2526// the error.
2527//
2528// See the AWS API reference guide for Amazon Elastic MapReduce's
2529// API operation RemoveAutoScalingPolicy for usage and error information.
2530// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveAutoScalingPolicy
2531func (c *EMR) RemoveAutoScalingPolicy(input *RemoveAutoScalingPolicyInput) (*RemoveAutoScalingPolicyOutput, error) {
2532	req, out := c.RemoveAutoScalingPolicyRequest(input)
2533	return out, req.Send()
2534}
2535
2536// RemoveAutoScalingPolicyWithContext is the same as RemoveAutoScalingPolicy with the addition of
2537// the ability to pass a context and additional request options.
2538//
2539// See RemoveAutoScalingPolicy for details on how to use this API operation.
2540//
2541// The context must be non-nil and will be used for request cancellation. If
2542// the context is nil a panic will occur. In the future the SDK may create
2543// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2544// for more information on using Contexts.
2545func (c *EMR) RemoveAutoScalingPolicyWithContext(ctx aws.Context, input *RemoveAutoScalingPolicyInput, opts ...request.Option) (*RemoveAutoScalingPolicyOutput, error) {
2546	req, out := c.RemoveAutoScalingPolicyRequest(input)
2547	req.SetContext(ctx)
2548	req.ApplyOptions(opts...)
2549	return out, req.Send()
2550}
2551
2552const opRemoveTags = "RemoveTags"
2553
2554// RemoveTagsRequest generates a "aws/request.Request" representing the
2555// client's request for the RemoveTags operation. The "output" return
2556// value will be populated with the request's response once the request completes
2557// successfully.
2558//
2559// Use "Send" method on the returned Request to send the API call to the service.
2560// the "output" return value is not valid until after Send returns without error.
2561//
2562// See RemoveTags for more information on using the RemoveTags
2563// API call, and error handling.
2564//
2565// This method is useful when you want to inject custom logic or configuration
2566// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2567//
2568//
2569//    // Example sending a request using the RemoveTagsRequest method.
2570//    req, resp := client.RemoveTagsRequest(params)
2571//
2572//    err := req.Send()
2573//    if err == nil { // resp is now filled
2574//        fmt.Println(resp)
2575//    }
2576//
2577// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2578func (c *EMR) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) {
2579	op := &request.Operation{
2580		Name:       opRemoveTags,
2581		HTTPMethod: "POST",
2582		HTTPPath:   "/",
2583	}
2584
2585	if input == nil {
2586		input = &RemoveTagsInput{}
2587	}
2588
2589	output = &RemoveTagsOutput{}
2590	req = c.newRequest(op, input, output)
2591	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2592	return
2593}
2594
2595// RemoveTags API operation for Amazon Elastic MapReduce.
2596//
2597// Removes tags from an Amazon EMR resource. Tags make it easier to associate
2598// clusters in various ways, such as grouping clusters to track your Amazon
2599// EMR resource allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
2600//
2601// The following example removes the stack tag with value Prod from a cluster:
2602//
2603// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2604// with awserr.Error's Code and Message methods to get detailed information about
2605// the error.
2606//
2607// See the AWS API reference guide for Amazon Elastic MapReduce's
2608// API operation RemoveTags for usage and error information.
2609//
2610// Returned Error Codes:
2611//   * ErrCodeInternalServerException "InternalServerException"
2612//   This exception occurs when there is an internal failure in the EMR service.
2613//
2614//   * ErrCodeInvalidRequestException "InvalidRequestException"
2615//   This exception occurs when there is something wrong with user input.
2616//
2617// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RemoveTags
2618func (c *EMR) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) {
2619	req, out := c.RemoveTagsRequest(input)
2620	return out, req.Send()
2621}
2622
2623// RemoveTagsWithContext is the same as RemoveTags with the addition of
2624// the ability to pass a context and additional request options.
2625//
2626// See RemoveTags for details on how to use this API operation.
2627//
2628// The context must be non-nil and will be used for request cancellation. If
2629// the context is nil a panic will occur. In the future the SDK may create
2630// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2631// for more information on using Contexts.
2632func (c *EMR) RemoveTagsWithContext(ctx aws.Context, input *RemoveTagsInput, opts ...request.Option) (*RemoveTagsOutput, error) {
2633	req, out := c.RemoveTagsRequest(input)
2634	req.SetContext(ctx)
2635	req.ApplyOptions(opts...)
2636	return out, req.Send()
2637}
2638
2639const opRunJobFlow = "RunJobFlow"
2640
2641// RunJobFlowRequest generates a "aws/request.Request" representing the
2642// client's request for the RunJobFlow operation. The "output" return
2643// value will be populated with the request's response once the request completes
2644// successfully.
2645//
2646// Use "Send" method on the returned Request to send the API call to the service.
2647// the "output" return value is not valid until after Send returns without error.
2648//
2649// See RunJobFlow for more information on using the RunJobFlow
2650// API call, and error handling.
2651//
2652// This method is useful when you want to inject custom logic or configuration
2653// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2654//
2655//
2656//    // Example sending a request using the RunJobFlowRequest method.
2657//    req, resp := client.RunJobFlowRequest(params)
2658//
2659//    err := req.Send()
2660//    if err == nil { // resp is now filled
2661//        fmt.Println(resp)
2662//    }
2663//
2664// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2665func (c *EMR) RunJobFlowRequest(input *RunJobFlowInput) (req *request.Request, output *RunJobFlowOutput) {
2666	op := &request.Operation{
2667		Name:       opRunJobFlow,
2668		HTTPMethod: "POST",
2669		HTTPPath:   "/",
2670	}
2671
2672	if input == nil {
2673		input = &RunJobFlowInput{}
2674	}
2675
2676	output = &RunJobFlowOutput{}
2677	req = c.newRequest(op, input, output)
2678	return
2679}
2680
2681// RunJobFlow API operation for Amazon Elastic MapReduce.
2682//
2683// RunJobFlow creates and starts running a new cluster (job flow). The cluster
2684// runs the steps specified. After the steps complete, the cluster stops and
2685// the HDFS partition is lost. To prevent loss of data, configure the last step
2686// of the job flow to store results in Amazon S3. If the JobFlowInstancesConfig
2687// KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions
2688// to the WAITING state rather than shutting down after the steps have completed.
2689//
2690// For additional protection, you can set the JobFlowInstancesConfig TerminationProtected
2691// parameter to TRUE to lock the cluster and prevent it from being terminated
2692// by API call, user intervention, or in the event of a job flow error.
2693//
2694// A maximum of 256 steps are allowed in each job flow.
2695//
2696// If your cluster is long-running (such as a Hive data warehouse) or complex,
2697// you may require more than 256 steps to process your data. You can bypass
2698// the 256-step limitation in various ways, including using the SSH shell to
2699// connect to the master node and submitting queries directly to the software
2700// running on the master node, such as Hive and Hadoop. For more information
2701// on how to do this, see Add More than 256 Steps to a Cluster (https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html)
2702// in the Amazon EMR Management Guide.
2703//
2704// For long running clusters, we recommend that you periodically store your
2705// results.
2706//
2707// The instance fleets configuration is available only in Amazon EMR versions
2708// 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain
2709// InstanceFleets parameters or InstanceGroups parameters, but not both.
2710//
2711// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2712// with awserr.Error's Code and Message methods to get detailed information about
2713// the error.
2714//
2715// See the AWS API reference guide for Amazon Elastic MapReduce's
2716// API operation RunJobFlow for usage and error information.
2717//
2718// Returned Error Codes:
2719//   * ErrCodeInternalServerError "InternalServerError"
2720//   Indicates that an error occurred while processing the request and that the
2721//   request was not completed.
2722//
2723// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/RunJobFlow
2724func (c *EMR) RunJobFlow(input *RunJobFlowInput) (*RunJobFlowOutput, error) {
2725	req, out := c.RunJobFlowRequest(input)
2726	return out, req.Send()
2727}
2728
2729// RunJobFlowWithContext is the same as RunJobFlow with the addition of
2730// the ability to pass a context and additional request options.
2731//
2732// See RunJobFlow for details on how to use this API operation.
2733//
2734// The context must be non-nil and will be used for request cancellation. If
2735// the context is nil a panic will occur. In the future the SDK may create
2736// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2737// for more information on using Contexts.
2738func (c *EMR) RunJobFlowWithContext(ctx aws.Context, input *RunJobFlowInput, opts ...request.Option) (*RunJobFlowOutput, error) {
2739	req, out := c.RunJobFlowRequest(input)
2740	req.SetContext(ctx)
2741	req.ApplyOptions(opts...)
2742	return out, req.Send()
2743}
2744
2745const opSetTerminationProtection = "SetTerminationProtection"
2746
2747// SetTerminationProtectionRequest generates a "aws/request.Request" representing the
2748// client's request for the SetTerminationProtection operation. The "output" return
2749// value will be populated with the request's response once the request completes
2750// successfully.
2751//
2752// Use "Send" method on the returned Request to send the API call to the service.
2753// the "output" return value is not valid until after Send returns without error.
2754//
2755// See SetTerminationProtection for more information on using the SetTerminationProtection
2756// API call, and error handling.
2757//
2758// This method is useful when you want to inject custom logic or configuration
2759// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2760//
2761//
2762//    // Example sending a request using the SetTerminationProtectionRequest method.
2763//    req, resp := client.SetTerminationProtectionRequest(params)
2764//
2765//    err := req.Send()
2766//    if err == nil { // resp is now filled
2767//        fmt.Println(resp)
2768//    }
2769//
2770// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
2771func (c *EMR) SetTerminationProtectionRequest(input *SetTerminationProtectionInput) (req *request.Request, output *SetTerminationProtectionOutput) {
2772	op := &request.Operation{
2773		Name:       opSetTerminationProtection,
2774		HTTPMethod: "POST",
2775		HTTPPath:   "/",
2776	}
2777
2778	if input == nil {
2779		input = &SetTerminationProtectionInput{}
2780	}
2781
2782	output = &SetTerminationProtectionOutput{}
2783	req = c.newRequest(op, input, output)
2784	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2785	return
2786}
2787
2788// SetTerminationProtection API operation for Amazon Elastic MapReduce.
2789//
2790// SetTerminationProtection locks a cluster (job flow) so the EC2 instances
2791// in the cluster cannot be terminated by user intervention, an API call, or
2792// in the event of a job-flow error. The cluster still terminates upon successful
2793// completion of the job flow. Calling SetTerminationProtection on a cluster
2794// is similar to calling the Amazon EC2 DisableAPITermination API on all EC2
2795// instances in a cluster.
2796//
2797// SetTerminationProtection is used to prevent accidental termination of a cluster
2798// and to ensure that in the event of an error, the instances persist so that
2799// you can recover any data stored in their ephemeral instance storage.
2800//
2801// To terminate a cluster that has been locked by setting SetTerminationProtection
2802// to true, you must first unlock the job flow by a subsequent call to SetTerminationProtection
2803// in which you set the value to false.
2804//
2805// For more information, seeManaging Cluster Termination (https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html)
2806// in the Amazon EMR Management Guide.
2807//
2808// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2809// with awserr.Error's Code and Message methods to get detailed information about
2810// the error.
2811//
2812// See the AWS API reference guide for Amazon Elastic MapReduce's
2813// API operation SetTerminationProtection for usage and error information.
2814//
2815// Returned Error Codes:
2816//   * ErrCodeInternalServerError "InternalServerError"
2817//   Indicates that an error occurred while processing the request and that the
2818//   request was not completed.
2819//
2820// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetTerminationProtection
2821func (c *EMR) SetTerminationProtection(input *SetTerminationProtectionInput) (*SetTerminationProtectionOutput, error) {
2822	req, out := c.SetTerminationProtectionRequest(input)
2823	return out, req.Send()
2824}
2825
2826// SetTerminationProtectionWithContext is the same as SetTerminationProtection with the addition of
2827// the ability to pass a context and additional request options.
2828//
2829// See SetTerminationProtection for details on how to use this API operation.
2830//
2831// The context must be non-nil and will be used for request cancellation. If
2832// the context is nil a panic will occur. In the future the SDK may create
2833// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2834// for more information on using Contexts.
2835func (c *EMR) SetTerminationProtectionWithContext(ctx aws.Context, input *SetTerminationProtectionInput, opts ...request.Option) (*SetTerminationProtectionOutput, error) {
2836	req, out := c.SetTerminationProtectionRequest(input)
2837	req.SetContext(ctx)
2838	req.ApplyOptions(opts...)
2839	return out, req.Send()
2840}
2841
2842const opSetVisibleToAllUsers = "SetVisibleToAllUsers"
2843
2844// SetVisibleToAllUsersRequest generates a "aws/request.Request" representing the
2845// client's request for the SetVisibleToAllUsers operation. The "output" return
2846// value will be populated with the request's response once the request completes
2847// successfully.
2848//
2849// Use "Send" method on the returned Request to send the API call to the service.
2850// the "output" return value is not valid until after Send returns without error.
2851//
2852// See SetVisibleToAllUsers for more information on using the SetVisibleToAllUsers
2853// API call, and error handling.
2854//
2855// This method is useful when you want to inject custom logic or configuration
2856// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2857//
2858//
2859//    // Example sending a request using the SetVisibleToAllUsersRequest method.
2860//    req, resp := client.SetVisibleToAllUsersRequest(params)
2861//
2862//    err := req.Send()
2863//    if err == nil { // resp is now filled
2864//        fmt.Println(resp)
2865//    }
2866//
2867// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
2868func (c *EMR) SetVisibleToAllUsersRequest(input *SetVisibleToAllUsersInput) (req *request.Request, output *SetVisibleToAllUsersOutput) {
2869	op := &request.Operation{
2870		Name:       opSetVisibleToAllUsers,
2871		HTTPMethod: "POST",
2872		HTTPPath:   "/",
2873	}
2874
2875	if input == nil {
2876		input = &SetVisibleToAllUsersInput{}
2877	}
2878
2879	output = &SetVisibleToAllUsersOutput{}
2880	req = c.newRequest(op, input, output)
2881	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2882	return
2883}
2884
2885// SetVisibleToAllUsers API operation for Amazon Elastic MapReduce.
2886//
2887// Sets the Cluster$VisibleToAllUsers value, which determines whether the cluster
2888// is visible to all IAM users of the AWS account associated with the cluster.
2889// Only the IAM user who created the cluster or the AWS account root user can
2890// call this action. The default value, true, indicates that all IAM users in
2891// the AWS account can perform cluster actions if they have the proper IAM policy
2892// permissions. If set to false, only the IAM user that created the cluster
2893// can perform actions. This action works on running clusters. You can override
2894// the default true setting when you create a cluster by using the VisibleToAllUsers
2895// parameter with RunJobFlow.
2896//
2897// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2898// with awserr.Error's Code and Message methods to get detailed information about
2899// the error.
2900//
2901// See the AWS API reference guide for Amazon Elastic MapReduce's
2902// API operation SetVisibleToAllUsers for usage and error information.
2903//
2904// Returned Error Codes:
2905//   * ErrCodeInternalServerError "InternalServerError"
2906//   Indicates that an error occurred while processing the request and that the
2907//   request was not completed.
2908//
2909// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/SetVisibleToAllUsers
2910func (c *EMR) SetVisibleToAllUsers(input *SetVisibleToAllUsersInput) (*SetVisibleToAllUsersOutput, error) {
2911	req, out := c.SetVisibleToAllUsersRequest(input)
2912	return out, req.Send()
2913}
2914
2915// SetVisibleToAllUsersWithContext is the same as SetVisibleToAllUsers with the addition of
2916// the ability to pass a context and additional request options.
2917//
2918// See SetVisibleToAllUsers for details on how to use this API operation.
2919//
2920// The context must be non-nil and will be used for request cancellation. If
2921// the context is nil a panic will occur. In the future the SDK may create
2922// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2923// for more information on using Contexts.
2924func (c *EMR) SetVisibleToAllUsersWithContext(ctx aws.Context, input *SetVisibleToAllUsersInput, opts ...request.Option) (*SetVisibleToAllUsersOutput, error) {
2925	req, out := c.SetVisibleToAllUsersRequest(input)
2926	req.SetContext(ctx)
2927	req.ApplyOptions(opts...)
2928	return out, req.Send()
2929}
2930
2931const opTerminateJobFlows = "TerminateJobFlows"
2932
2933// TerminateJobFlowsRequest generates a "aws/request.Request" representing the
2934// client's request for the TerminateJobFlows operation. The "output" return
2935// value will be populated with the request's response once the request completes
2936// successfully.
2937//
2938// Use "Send" method on the returned Request to send the API call to the service.
2939// the "output" return value is not valid until after Send returns without error.
2940//
2941// See TerminateJobFlows for more information on using the TerminateJobFlows
2942// API call, and error handling.
2943//
2944// This method is useful when you want to inject custom logic or configuration
2945// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2946//
2947//
2948//    // Example sending a request using the TerminateJobFlowsRequest method.
2949//    req, resp := client.TerminateJobFlowsRequest(params)
2950//
2951//    err := req.Send()
2952//    if err == nil { // resp is now filled
2953//        fmt.Println(resp)
2954//    }
2955//
2956// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
2957func (c *EMR) TerminateJobFlowsRequest(input *TerminateJobFlowsInput) (req *request.Request, output *TerminateJobFlowsOutput) {
2958	op := &request.Operation{
2959		Name:       opTerminateJobFlows,
2960		HTTPMethod: "POST",
2961		HTTPPath:   "/",
2962	}
2963
2964	if input == nil {
2965		input = &TerminateJobFlowsInput{}
2966	}
2967
2968	output = &TerminateJobFlowsOutput{}
2969	req = c.newRequest(op, input, output)
2970	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2971	return
2972}
2973
2974// TerminateJobFlows API operation for Amazon Elastic MapReduce.
2975//
2976// TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow
2977// is shut down, any step not yet completed is canceled and the EC2 instances
2978// on which the cluster is running are stopped. Any log files not already saved
2979// are uploaded to Amazon S3 if a LogUri was specified when the cluster was
2980// created.
2981//
2982// The maximum number of clusters allowed is 10. The call to TerminateJobFlows
2983// is asynchronous. Depending on the configuration of the cluster, it may take
2984// up to 1-5 minutes for the cluster to completely terminate and release allocated
2985// resources, such as Amazon EC2 instances.
2986//
2987// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2988// with awserr.Error's Code and Message methods to get detailed information about
2989// the error.
2990//
2991// See the AWS API reference guide for Amazon Elastic MapReduce's
2992// API operation TerminateJobFlows for usage and error information.
2993//
2994// Returned Error Codes:
2995//   * ErrCodeInternalServerError "InternalServerError"
2996//   Indicates that an error occurred while processing the request and that the
2997//   request was not completed.
2998//
2999// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticmapreduce-2009-03-31/TerminateJobFlows
3000func (c *EMR) TerminateJobFlows(input *TerminateJobFlowsInput) (*TerminateJobFlowsOutput, error) {
3001	req, out := c.TerminateJobFlowsRequest(input)
3002	return out, req.Send()
3003}
3004
3005// TerminateJobFlowsWithContext is the same as TerminateJobFlows with the addition of
3006// the ability to pass a context and additional request options.
3007//
3008// See TerminateJobFlows for details on how to use this API operation.
3009//
3010// The context must be non-nil and will be used for request cancellation. If
3011// the context is nil a panic will occur. In the future the SDK may create
3012// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3013// for more information on using Contexts.
3014func (c *EMR) TerminateJobFlowsWithContext(ctx aws.Context, input *TerminateJobFlowsInput, opts ...request.Option) (*TerminateJobFlowsOutput, error) {
3015	req, out := c.TerminateJobFlowsRequest(input)
3016	req.SetContext(ctx)
3017	req.ApplyOptions(opts...)
3018	return out, req.Send()
3019}
3020
3021type AddInstanceFleetInput struct {
3022	_ struct{} `type:"structure"`
3023
3024	// The unique identifier of the cluster.
3025	//
3026	// ClusterId is a required field
3027	ClusterId *string `type:"string" required:"true"`
3028
3029	// Specifies the configuration of the instance fleet.
3030	//
3031	// InstanceFleet is a required field
3032	InstanceFleet *InstanceFleetConfig `type:"structure" required:"true"`
3033}
3034
3035// String returns the string representation
3036func (s AddInstanceFleetInput) String() string {
3037	return awsutil.Prettify(s)
3038}
3039
3040// GoString returns the string representation
3041func (s AddInstanceFleetInput) GoString() string {
3042	return s.String()
3043}
3044
3045// Validate inspects the fields of the type to determine if they are valid.
3046func (s *AddInstanceFleetInput) Validate() error {
3047	invalidParams := request.ErrInvalidParams{Context: "AddInstanceFleetInput"}
3048	if s.ClusterId == nil {
3049		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
3050	}
3051	if s.InstanceFleet == nil {
3052		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
3053	}
3054	if s.InstanceFleet != nil {
3055		if err := s.InstanceFleet.Validate(); err != nil {
3056			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
3057		}
3058	}
3059
3060	if invalidParams.Len() > 0 {
3061		return invalidParams
3062	}
3063	return nil
3064}
3065
3066// SetClusterId sets the ClusterId field's value.
3067func (s *AddInstanceFleetInput) SetClusterId(v string) *AddInstanceFleetInput {
3068	s.ClusterId = &v
3069	return s
3070}
3071
3072// SetInstanceFleet sets the InstanceFleet field's value.
3073func (s *AddInstanceFleetInput) SetInstanceFleet(v *InstanceFleetConfig) *AddInstanceFleetInput {
3074	s.InstanceFleet = v
3075	return s
3076}
3077
3078type AddInstanceFleetOutput struct {
3079	_ struct{} `type:"structure"`
3080
3081	// The Amazon Resource Name of the cluster.
3082	ClusterArn *string `min:"20" type:"string"`
3083
3084	// The unique identifier of the cluster.
3085	ClusterId *string `type:"string"`
3086
3087	// The unique identifier of the instance fleet.
3088	InstanceFleetId *string `type:"string"`
3089}
3090
3091// String returns the string representation
3092func (s AddInstanceFleetOutput) String() string {
3093	return awsutil.Prettify(s)
3094}
3095
3096// GoString returns the string representation
3097func (s AddInstanceFleetOutput) GoString() string {
3098	return s.String()
3099}
3100
3101// SetClusterArn sets the ClusterArn field's value.
3102func (s *AddInstanceFleetOutput) SetClusterArn(v string) *AddInstanceFleetOutput {
3103	s.ClusterArn = &v
3104	return s
3105}
3106
3107// SetClusterId sets the ClusterId field's value.
3108func (s *AddInstanceFleetOutput) SetClusterId(v string) *AddInstanceFleetOutput {
3109	s.ClusterId = &v
3110	return s
3111}
3112
3113// SetInstanceFleetId sets the InstanceFleetId field's value.
3114func (s *AddInstanceFleetOutput) SetInstanceFleetId(v string) *AddInstanceFleetOutput {
3115	s.InstanceFleetId = &v
3116	return s
3117}
3118
3119// Input to an AddInstanceGroups call.
3120type AddInstanceGroupsInput struct {
3121	_ struct{} `type:"structure"`
3122
3123	// Instance groups to add.
3124	//
3125	// InstanceGroups is a required field
3126	InstanceGroups []*InstanceGroupConfig `type:"list" required:"true"`
3127
3128	// Job flow in which to add the instance groups.
3129	//
3130	// JobFlowId is a required field
3131	JobFlowId *string `type:"string" required:"true"`
3132}
3133
3134// String returns the string representation
3135func (s AddInstanceGroupsInput) String() string {
3136	return awsutil.Prettify(s)
3137}
3138
3139// GoString returns the string representation
3140func (s AddInstanceGroupsInput) GoString() string {
3141	return s.String()
3142}
3143
3144// Validate inspects the fields of the type to determine if they are valid.
3145func (s *AddInstanceGroupsInput) Validate() error {
3146	invalidParams := request.ErrInvalidParams{Context: "AddInstanceGroupsInput"}
3147	if s.InstanceGroups == nil {
3148		invalidParams.Add(request.NewErrParamRequired("InstanceGroups"))
3149	}
3150	if s.JobFlowId == nil {
3151		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3152	}
3153	if s.InstanceGroups != nil {
3154		for i, v := range s.InstanceGroups {
3155			if v == nil {
3156				continue
3157			}
3158			if err := v.Validate(); err != nil {
3159				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
3160			}
3161		}
3162	}
3163
3164	if invalidParams.Len() > 0 {
3165		return invalidParams
3166	}
3167	return nil
3168}
3169
3170// SetInstanceGroups sets the InstanceGroups field's value.
3171func (s *AddInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupConfig) *AddInstanceGroupsInput {
3172	s.InstanceGroups = v
3173	return s
3174}
3175
3176// SetJobFlowId sets the JobFlowId field's value.
3177func (s *AddInstanceGroupsInput) SetJobFlowId(v string) *AddInstanceGroupsInput {
3178	s.JobFlowId = &v
3179	return s
3180}
3181
3182// Output from an AddInstanceGroups call.
3183type AddInstanceGroupsOutput struct {
3184	_ struct{} `type:"structure"`
3185
3186	// The Amazon Resource Name of the cluster.
3187	ClusterArn *string `min:"20" type:"string"`
3188
3189	// Instance group IDs of the newly created instance groups.
3190	InstanceGroupIds []*string `type:"list"`
3191
3192	// The job flow ID in which the instance groups are added.
3193	JobFlowId *string `type:"string"`
3194}
3195
3196// String returns the string representation
3197func (s AddInstanceGroupsOutput) String() string {
3198	return awsutil.Prettify(s)
3199}
3200
3201// GoString returns the string representation
3202func (s AddInstanceGroupsOutput) GoString() string {
3203	return s.String()
3204}
3205
3206// SetClusterArn sets the ClusterArn field's value.
3207func (s *AddInstanceGroupsOutput) SetClusterArn(v string) *AddInstanceGroupsOutput {
3208	s.ClusterArn = &v
3209	return s
3210}
3211
3212// SetInstanceGroupIds sets the InstanceGroupIds field's value.
3213func (s *AddInstanceGroupsOutput) SetInstanceGroupIds(v []*string) *AddInstanceGroupsOutput {
3214	s.InstanceGroupIds = v
3215	return s
3216}
3217
3218// SetJobFlowId sets the JobFlowId field's value.
3219func (s *AddInstanceGroupsOutput) SetJobFlowId(v string) *AddInstanceGroupsOutput {
3220	s.JobFlowId = &v
3221	return s
3222}
3223
3224// The input argument to the AddJobFlowSteps operation.
3225type AddJobFlowStepsInput struct {
3226	_ struct{} `type:"structure"`
3227
3228	// A string that uniquely identifies the job flow. This identifier is returned
3229	// by RunJobFlow and can also be obtained from ListClusters.
3230	//
3231	// JobFlowId is a required field
3232	JobFlowId *string `type:"string" required:"true"`
3233
3234	// A list of StepConfig to be executed by the job flow.
3235	//
3236	// Steps is a required field
3237	Steps []*StepConfig `type:"list" required:"true"`
3238}
3239
3240// String returns the string representation
3241func (s AddJobFlowStepsInput) String() string {
3242	return awsutil.Prettify(s)
3243}
3244
3245// GoString returns the string representation
3246func (s AddJobFlowStepsInput) GoString() string {
3247	return s.String()
3248}
3249
3250// Validate inspects the fields of the type to determine if they are valid.
3251func (s *AddJobFlowStepsInput) Validate() error {
3252	invalidParams := request.ErrInvalidParams{Context: "AddJobFlowStepsInput"}
3253	if s.JobFlowId == nil {
3254		invalidParams.Add(request.NewErrParamRequired("JobFlowId"))
3255	}
3256	if s.Steps == nil {
3257		invalidParams.Add(request.NewErrParamRequired("Steps"))
3258	}
3259	if s.Steps != nil {
3260		for i, v := range s.Steps {
3261			if v == nil {
3262				continue
3263			}
3264			if err := v.Validate(); err != nil {
3265				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
3266			}
3267		}
3268	}
3269
3270	if invalidParams.Len() > 0 {
3271		return invalidParams
3272	}
3273	return nil
3274}
3275
3276// SetJobFlowId sets the JobFlowId field's value.
3277func (s *AddJobFlowStepsInput) SetJobFlowId(v string) *AddJobFlowStepsInput {
3278	s.JobFlowId = &v
3279	return s
3280}
3281
3282// SetSteps sets the Steps field's value.
3283func (s *AddJobFlowStepsInput) SetSteps(v []*StepConfig) *AddJobFlowStepsInput {
3284	s.Steps = v
3285	return s
3286}
3287
3288// The output for the AddJobFlowSteps operation.
3289type AddJobFlowStepsOutput struct {
3290	_ struct{} `type:"structure"`
3291
3292	// The identifiers of the list of steps added to the job flow.
3293	StepIds []*string `type:"list"`
3294}
3295
3296// String returns the string representation
3297func (s AddJobFlowStepsOutput) String() string {
3298	return awsutil.Prettify(s)
3299}
3300
3301// GoString returns the string representation
3302func (s AddJobFlowStepsOutput) GoString() string {
3303	return s.String()
3304}
3305
3306// SetStepIds sets the StepIds field's value.
3307func (s *AddJobFlowStepsOutput) SetStepIds(v []*string) *AddJobFlowStepsOutput {
3308	s.StepIds = v
3309	return s
3310}
3311
3312// This input identifies a cluster and a list of tags to attach.
3313type AddTagsInput struct {
3314	_ struct{} `type:"structure"`
3315
3316	// The Amazon EMR resource identifier to which tags will be added. This value
3317	// must be a cluster identifier.
3318	//
3319	// ResourceId is a required field
3320	ResourceId *string `type:"string" required:"true"`
3321
3322	// A list of tags to associate with a cluster and propagate to EC2 instances.
3323	// Tags are user-defined key/value pairs that consist of a required key string
3324	// with a maximum of 128 characters, and an optional value string with a maximum
3325	// of 256 characters.
3326	//
3327	// Tags is a required field
3328	Tags []*Tag `type:"list" required:"true"`
3329}
3330
3331// String returns the string representation
3332func (s AddTagsInput) String() string {
3333	return awsutil.Prettify(s)
3334}
3335
3336// GoString returns the string representation
3337func (s AddTagsInput) GoString() string {
3338	return s.String()
3339}
3340
3341// Validate inspects the fields of the type to determine if they are valid.
3342func (s *AddTagsInput) Validate() error {
3343	invalidParams := request.ErrInvalidParams{Context: "AddTagsInput"}
3344	if s.ResourceId == nil {
3345		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
3346	}
3347	if s.Tags == nil {
3348		invalidParams.Add(request.NewErrParamRequired("Tags"))
3349	}
3350
3351	if invalidParams.Len() > 0 {
3352		return invalidParams
3353	}
3354	return nil
3355}
3356
3357// SetResourceId sets the ResourceId field's value.
3358func (s *AddTagsInput) SetResourceId(v string) *AddTagsInput {
3359	s.ResourceId = &v
3360	return s
3361}
3362
3363// SetTags sets the Tags field's value.
3364func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput {
3365	s.Tags = v
3366	return s
3367}
3368
3369// This output indicates the result of adding tags to a resource.
3370type AddTagsOutput struct {
3371	_ struct{} `type:"structure"`
3372}
3373
3374// String returns the string representation
3375func (s AddTagsOutput) String() string {
3376	return awsutil.Prettify(s)
3377}
3378
3379// GoString returns the string representation
3380func (s AddTagsOutput) GoString() string {
3381	return s.String()
3382}
3383
3384// With Amazon EMR release version 4.0 and later, the only accepted parameter
3385// is the application name. To pass arguments to applications, you use configuration
3386// classifications specified using configuration JSON objects. For more information,
3387// see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
3388//
3389// With earlier Amazon EMR releases, the application is any Amazon or third-party
3390// software that you can add to the cluster. This structure contains a list
3391// of strings that indicates the software to use with the cluster and accepts
3392// a user argument list. Amazon EMR accepts and forwards the argument list to
3393// the corresponding installation script as bootstrap action argument.
3394type Application struct {
3395	_ struct{} `type:"structure"`
3396
3397	// This option is for advanced users only. This is meta information about third-party
3398	// applications that third-party vendors use for testing purposes.
3399	AdditionalInfo map[string]*string `type:"map"`
3400
3401	// Arguments for Amazon EMR to pass to the application.
3402	Args []*string `type:"list"`
3403
3404	// The name of the application.
3405	Name *string `type:"string"`
3406
3407	// The version of the application.
3408	Version *string `type:"string"`
3409}
3410
3411// String returns the string representation
3412func (s Application) String() string {
3413	return awsutil.Prettify(s)
3414}
3415
3416// GoString returns the string representation
3417func (s Application) GoString() string {
3418	return s.String()
3419}
3420
3421// SetAdditionalInfo sets the AdditionalInfo field's value.
3422func (s *Application) SetAdditionalInfo(v map[string]*string) *Application {
3423	s.AdditionalInfo = v
3424	return s
3425}
3426
3427// SetArgs sets the Args field's value.
3428func (s *Application) SetArgs(v []*string) *Application {
3429	s.Args = v
3430	return s
3431}
3432
3433// SetName sets the Name field's value.
3434func (s *Application) SetName(v string) *Application {
3435	s.Name = &v
3436	return s
3437}
3438
3439// SetVersion sets the Version field's value.
3440func (s *Application) SetVersion(v string) *Application {
3441	s.Version = &v
3442	return s
3443}
3444
3445// An automatic scaling policy for a core instance group or task instance group
3446// in an Amazon EMR cluster. An automatic scaling policy defines how an instance
3447// group dynamically adds and terminates EC2 instances in response to the value
3448// of a CloudWatch metric. See PutAutoScalingPolicy.
3449type AutoScalingPolicy struct {
3450	_ struct{} `type:"structure"`
3451
3452	// The upper and lower EC2 instance limits for an automatic scaling policy.
3453	// Automatic scaling activity will not cause an instance group to grow above
3454	// or below these limits.
3455	//
3456	// Constraints is a required field
3457	Constraints *ScalingConstraints `type:"structure" required:"true"`
3458
3459	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3460	//
3461	// Rules is a required field
3462	Rules []*ScalingRule `type:"list" required:"true"`
3463}
3464
3465// String returns the string representation
3466func (s AutoScalingPolicy) String() string {
3467	return awsutil.Prettify(s)
3468}
3469
3470// GoString returns the string representation
3471func (s AutoScalingPolicy) GoString() string {
3472	return s.String()
3473}
3474
3475// Validate inspects the fields of the type to determine if they are valid.
3476func (s *AutoScalingPolicy) Validate() error {
3477	invalidParams := request.ErrInvalidParams{Context: "AutoScalingPolicy"}
3478	if s.Constraints == nil {
3479		invalidParams.Add(request.NewErrParamRequired("Constraints"))
3480	}
3481	if s.Rules == nil {
3482		invalidParams.Add(request.NewErrParamRequired("Rules"))
3483	}
3484	if s.Constraints != nil {
3485		if err := s.Constraints.Validate(); err != nil {
3486			invalidParams.AddNested("Constraints", err.(request.ErrInvalidParams))
3487		}
3488	}
3489	if s.Rules != nil {
3490		for i, v := range s.Rules {
3491			if v == nil {
3492				continue
3493			}
3494			if err := v.Validate(); err != nil {
3495				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
3496			}
3497		}
3498	}
3499
3500	if invalidParams.Len() > 0 {
3501		return invalidParams
3502	}
3503	return nil
3504}
3505
3506// SetConstraints sets the Constraints field's value.
3507func (s *AutoScalingPolicy) SetConstraints(v *ScalingConstraints) *AutoScalingPolicy {
3508	s.Constraints = v
3509	return s
3510}
3511
3512// SetRules sets the Rules field's value.
3513func (s *AutoScalingPolicy) SetRules(v []*ScalingRule) *AutoScalingPolicy {
3514	s.Rules = v
3515	return s
3516}
3517
3518// An automatic scaling policy for a core instance group or task instance group
3519// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
3520// group dynamically adds and terminates EC2 instances in response to the value
3521// of a CloudWatch metric. See PutAutoScalingPolicy.
3522type AutoScalingPolicyDescription struct {
3523	_ struct{} `type:"structure"`
3524
3525	// The upper and lower EC2 instance limits for an automatic scaling policy.
3526	// Automatic scaling activity will not cause an instance group to grow above
3527	// or below these limits.
3528	Constraints *ScalingConstraints `type:"structure"`
3529
3530	// The scale-in and scale-out rules that comprise the automatic scaling policy.
3531	Rules []*ScalingRule `type:"list"`
3532
3533	// The status of an automatic scaling policy.
3534	Status *AutoScalingPolicyStatus `type:"structure"`
3535}
3536
3537// String returns the string representation
3538func (s AutoScalingPolicyDescription) String() string {
3539	return awsutil.Prettify(s)
3540}
3541
3542// GoString returns the string representation
3543func (s AutoScalingPolicyDescription) GoString() string {
3544	return s.String()
3545}
3546
3547// SetConstraints sets the Constraints field's value.
3548func (s *AutoScalingPolicyDescription) SetConstraints(v *ScalingConstraints) *AutoScalingPolicyDescription {
3549	s.Constraints = v
3550	return s
3551}
3552
3553// SetRules sets the Rules field's value.
3554func (s *AutoScalingPolicyDescription) SetRules(v []*ScalingRule) *AutoScalingPolicyDescription {
3555	s.Rules = v
3556	return s
3557}
3558
3559// SetStatus sets the Status field's value.
3560func (s *AutoScalingPolicyDescription) SetStatus(v *AutoScalingPolicyStatus) *AutoScalingPolicyDescription {
3561	s.Status = v
3562	return s
3563}
3564
3565// The reason for an AutoScalingPolicyStatus change.
3566type AutoScalingPolicyStateChangeReason struct {
3567	_ struct{} `type:"structure"`
3568
3569	// The code indicating the reason for the change in status.USER_REQUEST indicates
3570	// that the scaling policy status was changed by a user. PROVISION_FAILURE indicates
3571	// that the status change was because the policy failed to provision. CLEANUP_FAILURE
3572	// indicates an error.
3573	Code *string `type:"string" enum:"AutoScalingPolicyStateChangeReasonCode"`
3574
3575	// A friendly, more verbose message that accompanies an automatic scaling policy
3576	// state change.
3577	Message *string `type:"string"`
3578}
3579
3580// String returns the string representation
3581func (s AutoScalingPolicyStateChangeReason) String() string {
3582	return awsutil.Prettify(s)
3583}
3584
3585// GoString returns the string representation
3586func (s AutoScalingPolicyStateChangeReason) GoString() string {
3587	return s.String()
3588}
3589
3590// SetCode sets the Code field's value.
3591func (s *AutoScalingPolicyStateChangeReason) SetCode(v string) *AutoScalingPolicyStateChangeReason {
3592	s.Code = &v
3593	return s
3594}
3595
3596// SetMessage sets the Message field's value.
3597func (s *AutoScalingPolicyStateChangeReason) SetMessage(v string) *AutoScalingPolicyStateChangeReason {
3598	s.Message = &v
3599	return s
3600}
3601
3602// The status of an automatic scaling policy.
3603type AutoScalingPolicyStatus struct {
3604	_ struct{} `type:"structure"`
3605
3606	// Indicates the status of the automatic scaling policy.
3607	State *string `type:"string" enum:"AutoScalingPolicyState"`
3608
3609	// The reason for a change in status.
3610	StateChangeReason *AutoScalingPolicyStateChangeReason `type:"structure"`
3611}
3612
3613// String returns the string representation
3614func (s AutoScalingPolicyStatus) String() string {
3615	return awsutil.Prettify(s)
3616}
3617
3618// GoString returns the string representation
3619func (s AutoScalingPolicyStatus) GoString() string {
3620	return s.String()
3621}
3622
3623// SetState sets the State field's value.
3624func (s *AutoScalingPolicyStatus) SetState(v string) *AutoScalingPolicyStatus {
3625	s.State = &v
3626	return s
3627}
3628
3629// SetStateChangeReason sets the StateChangeReason field's value.
3630func (s *AutoScalingPolicyStatus) SetStateChangeReason(v *AutoScalingPolicyStateChangeReason) *AutoScalingPolicyStatus {
3631	s.StateChangeReason = v
3632	return s
3633}
3634
3635// A configuration for Amazon EMR block public access. When BlockPublicSecurityGroupRules
3636// is set to true, Amazon EMR prevents cluster creation if one of the cluster's
3637// security groups has a rule that allows inbound traffic from 0.0.0.0/0 or
3638// ::/0 on a port, unless the port is specified as an exception using PermittedPublicSecurityGroupRuleRanges.
3639type BlockPublicAccessConfiguration struct {
3640	_ struct{} `type:"structure"`
3641
3642	// Indicates whether EMR block public access is enabled (true) or disabled (false).
3643	// By default, the value is false for accounts that have created EMR clusters
3644	// before July 2019. For accounts created after this, the default is true.
3645	//
3646	// BlockPublicSecurityGroupRules is a required field
3647	BlockPublicSecurityGroupRules *bool `type:"boolean" required:"true"`
3648
3649	// Specifies ports and port ranges that are permitted to have security group
3650	// rules that allow inbound traffic from all public sources. For example, if
3651	// Port 23 (Telnet) is specified for PermittedPublicSecurityGroupRuleRanges,
3652	// Amazon EMR allows cluster creation if a security group associated with the
3653	// cluster has a rule that allows inbound traffic on Port 23 from IPv4 0.0.0.0/0
3654	// or IPv6 port ::/0 as the source.
3655	//
3656	// By default, Port 22, which is used for SSH access to the cluster EC2 instances,
3657	// is in the list of PermittedPublicSecurityGroupRuleRanges.
3658	PermittedPublicSecurityGroupRuleRanges []*PortRange `type:"list"`
3659}
3660
3661// String returns the string representation
3662func (s BlockPublicAccessConfiguration) String() string {
3663	return awsutil.Prettify(s)
3664}
3665
3666// GoString returns the string representation
3667func (s BlockPublicAccessConfiguration) GoString() string {
3668	return s.String()
3669}
3670
3671// Validate inspects the fields of the type to determine if they are valid.
3672func (s *BlockPublicAccessConfiguration) Validate() error {
3673	invalidParams := request.ErrInvalidParams{Context: "BlockPublicAccessConfiguration"}
3674	if s.BlockPublicSecurityGroupRules == nil {
3675		invalidParams.Add(request.NewErrParamRequired("BlockPublicSecurityGroupRules"))
3676	}
3677	if s.PermittedPublicSecurityGroupRuleRanges != nil {
3678		for i, v := range s.PermittedPublicSecurityGroupRuleRanges {
3679			if v == nil {
3680				continue
3681			}
3682			if err := v.Validate(); err != nil {
3683				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PermittedPublicSecurityGroupRuleRanges", i), err.(request.ErrInvalidParams))
3684			}
3685		}
3686	}
3687
3688	if invalidParams.Len() > 0 {
3689		return invalidParams
3690	}
3691	return nil
3692}
3693
3694// SetBlockPublicSecurityGroupRules sets the BlockPublicSecurityGroupRules field's value.
3695func (s *BlockPublicAccessConfiguration) SetBlockPublicSecurityGroupRules(v bool) *BlockPublicAccessConfiguration {
3696	s.BlockPublicSecurityGroupRules = &v
3697	return s
3698}
3699
3700// SetPermittedPublicSecurityGroupRuleRanges sets the PermittedPublicSecurityGroupRuleRanges field's value.
3701func (s *BlockPublicAccessConfiguration) SetPermittedPublicSecurityGroupRuleRanges(v []*PortRange) *BlockPublicAccessConfiguration {
3702	s.PermittedPublicSecurityGroupRuleRanges = v
3703	return s
3704}
3705
3706// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
3707// using the PutBlockPublicAccessConfiguration action as well as the date and
3708// time that the configuration was created. Each time a configuration for block
3709// public access is updated, Amazon EMR updates this metadata.
3710type BlockPublicAccessConfigurationMetadata struct {
3711	_ struct{} `type:"structure"`
3712
3713	// The Amazon Resource Name that created or last modified the configuration.
3714	//
3715	// CreatedByArn is a required field
3716	CreatedByArn *string `min:"20" type:"string" required:"true"`
3717
3718	// The date and time that the configuration was created.
3719	//
3720	// CreationDateTime is a required field
3721	CreationDateTime *time.Time `type:"timestamp" required:"true"`
3722}
3723
3724// String returns the string representation
3725func (s BlockPublicAccessConfigurationMetadata) String() string {
3726	return awsutil.Prettify(s)
3727}
3728
3729// GoString returns the string representation
3730func (s BlockPublicAccessConfigurationMetadata) GoString() string {
3731	return s.String()
3732}
3733
3734// SetCreatedByArn sets the CreatedByArn field's value.
3735func (s *BlockPublicAccessConfigurationMetadata) SetCreatedByArn(v string) *BlockPublicAccessConfigurationMetadata {
3736	s.CreatedByArn = &v
3737	return s
3738}
3739
3740// SetCreationDateTime sets the CreationDateTime field's value.
3741func (s *BlockPublicAccessConfigurationMetadata) SetCreationDateTime(v time.Time) *BlockPublicAccessConfigurationMetadata {
3742	s.CreationDateTime = &v
3743	return s
3744}
3745
3746// Configuration of a bootstrap action.
3747type BootstrapActionConfig struct {
3748	_ struct{} `type:"structure"`
3749
3750	// The name of the bootstrap action.
3751	//
3752	// Name is a required field
3753	Name *string `type:"string" required:"true"`
3754
3755	// The script run by the bootstrap action.
3756	//
3757	// ScriptBootstrapAction is a required field
3758	ScriptBootstrapAction *ScriptBootstrapActionConfig `type:"structure" required:"true"`
3759}
3760
3761// String returns the string representation
3762func (s BootstrapActionConfig) String() string {
3763	return awsutil.Prettify(s)
3764}
3765
3766// GoString returns the string representation
3767func (s BootstrapActionConfig) GoString() string {
3768	return s.String()
3769}
3770
3771// Validate inspects the fields of the type to determine if they are valid.
3772func (s *BootstrapActionConfig) Validate() error {
3773	invalidParams := request.ErrInvalidParams{Context: "BootstrapActionConfig"}
3774	if s.Name == nil {
3775		invalidParams.Add(request.NewErrParamRequired("Name"))
3776	}
3777	if s.ScriptBootstrapAction == nil {
3778		invalidParams.Add(request.NewErrParamRequired("ScriptBootstrapAction"))
3779	}
3780	if s.ScriptBootstrapAction != nil {
3781		if err := s.ScriptBootstrapAction.Validate(); err != nil {
3782			invalidParams.AddNested("ScriptBootstrapAction", err.(request.ErrInvalidParams))
3783		}
3784	}
3785
3786	if invalidParams.Len() > 0 {
3787		return invalidParams
3788	}
3789	return nil
3790}
3791
3792// SetName sets the Name field's value.
3793func (s *BootstrapActionConfig) SetName(v string) *BootstrapActionConfig {
3794	s.Name = &v
3795	return s
3796}
3797
3798// SetScriptBootstrapAction sets the ScriptBootstrapAction field's value.
3799func (s *BootstrapActionConfig) SetScriptBootstrapAction(v *ScriptBootstrapActionConfig) *BootstrapActionConfig {
3800	s.ScriptBootstrapAction = v
3801	return s
3802}
3803
3804// Reports the configuration of a bootstrap action in a cluster (job flow).
3805type BootstrapActionDetail struct {
3806	_ struct{} `type:"structure"`
3807
3808	// A description of the bootstrap action.
3809	BootstrapActionConfig *BootstrapActionConfig `type:"structure"`
3810}
3811
3812// String returns the string representation
3813func (s BootstrapActionDetail) String() string {
3814	return awsutil.Prettify(s)
3815}
3816
3817// GoString returns the string representation
3818func (s BootstrapActionDetail) GoString() string {
3819	return s.String()
3820}
3821
3822// SetBootstrapActionConfig sets the BootstrapActionConfig field's value.
3823func (s *BootstrapActionDetail) SetBootstrapActionConfig(v *BootstrapActionConfig) *BootstrapActionDetail {
3824	s.BootstrapActionConfig = v
3825	return s
3826}
3827
3828// Specification of the status of a CancelSteps request. Available only in Amazon
3829// EMR version 4.8.0 and later, excluding version 5.0.0.
3830type CancelStepsInfo struct {
3831	_ struct{} `type:"structure"`
3832
3833	// The reason for the failure if the CancelSteps request fails.
3834	Reason *string `type:"string"`
3835
3836	// The status of a CancelSteps Request. The value may be SUBMITTED or FAILED.
3837	Status *string `type:"string" enum:"CancelStepsRequestStatus"`
3838
3839	// The encrypted StepId of a step.
3840	StepId *string `type:"string"`
3841}
3842
3843// String returns the string representation
3844func (s CancelStepsInfo) String() string {
3845	return awsutil.Prettify(s)
3846}
3847
3848// GoString returns the string representation
3849func (s CancelStepsInfo) GoString() string {
3850	return s.String()
3851}
3852
3853// SetReason sets the Reason field's value.
3854func (s *CancelStepsInfo) SetReason(v string) *CancelStepsInfo {
3855	s.Reason = &v
3856	return s
3857}
3858
3859// SetStatus sets the Status field's value.
3860func (s *CancelStepsInfo) SetStatus(v string) *CancelStepsInfo {
3861	s.Status = &v
3862	return s
3863}
3864
3865// SetStepId sets the StepId field's value.
3866func (s *CancelStepsInfo) SetStepId(v string) *CancelStepsInfo {
3867	s.StepId = &v
3868	return s
3869}
3870
3871// The input argument to the CancelSteps operation.
3872type CancelStepsInput struct {
3873	_ struct{} `type:"structure"`
3874
3875	// The ClusterID for which specified steps will be canceled. Use RunJobFlow
3876	// and ListClusters to get ClusterIDs.
3877	//
3878	// ClusterId is a required field
3879	ClusterId *string `type:"string" required:"true"`
3880
3881	// The option to choose for cancelling RUNNING steps. By default, the value
3882	// is SEND_INTERRUPT.
3883	StepCancellationOption *string `type:"string" enum:"StepCancellationOption"`
3884
3885	// The list of StepIDs to cancel. Use ListSteps to get steps and their states
3886	// for the specified cluster.
3887	//
3888	// StepIds is a required field
3889	StepIds []*string `type:"list" required:"true"`
3890}
3891
3892// String returns the string representation
3893func (s CancelStepsInput) String() string {
3894	return awsutil.Prettify(s)
3895}
3896
3897// GoString returns the string representation
3898func (s CancelStepsInput) GoString() string {
3899	return s.String()
3900}
3901
3902// Validate inspects the fields of the type to determine if they are valid.
3903func (s *CancelStepsInput) Validate() error {
3904	invalidParams := request.ErrInvalidParams{Context: "CancelStepsInput"}
3905	if s.ClusterId == nil {
3906		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
3907	}
3908	if s.StepIds == nil {
3909		invalidParams.Add(request.NewErrParamRequired("StepIds"))
3910	}
3911
3912	if invalidParams.Len() > 0 {
3913		return invalidParams
3914	}
3915	return nil
3916}
3917
3918// SetClusterId sets the ClusterId field's value.
3919func (s *CancelStepsInput) SetClusterId(v string) *CancelStepsInput {
3920	s.ClusterId = &v
3921	return s
3922}
3923
3924// SetStepCancellationOption sets the StepCancellationOption field's value.
3925func (s *CancelStepsInput) SetStepCancellationOption(v string) *CancelStepsInput {
3926	s.StepCancellationOption = &v
3927	return s
3928}
3929
3930// SetStepIds sets the StepIds field's value.
3931func (s *CancelStepsInput) SetStepIds(v []*string) *CancelStepsInput {
3932	s.StepIds = v
3933	return s
3934}
3935
3936// The output for the CancelSteps operation.
3937type CancelStepsOutput struct {
3938	_ struct{} `type:"structure"`
3939
3940	// A list of CancelStepsInfo, which shows the status of specified cancel requests
3941	// for each StepID specified.
3942	CancelStepsInfoList []*CancelStepsInfo `type:"list"`
3943}
3944
3945// String returns the string representation
3946func (s CancelStepsOutput) String() string {
3947	return awsutil.Prettify(s)
3948}
3949
3950// GoString returns the string representation
3951func (s CancelStepsOutput) GoString() string {
3952	return s.String()
3953}
3954
3955// SetCancelStepsInfoList sets the CancelStepsInfoList field's value.
3956func (s *CancelStepsOutput) SetCancelStepsInfoList(v []*CancelStepsInfo) *CancelStepsOutput {
3957	s.CancelStepsInfoList = v
3958	return s
3959}
3960
3961// The definition of a CloudWatch metric alarm, which determines when an automatic
3962// scaling activity is triggered. When the defined alarm conditions are satisfied,
3963// scaling activity begins.
3964type CloudWatchAlarmDefinition struct {
3965	_ struct{} `type:"structure"`
3966
3967	// Determines how the metric specified by MetricName is compared to the value
3968	// specified by Threshold.
3969	//
3970	// ComparisonOperator is a required field
3971	ComparisonOperator *string `type:"string" required:"true" enum:"ComparisonOperator"`
3972
3973	// A CloudWatch metric dimension.
3974	Dimensions []*MetricDimension `type:"list"`
3975
3976	// The number of periods, in five-minute increments, during which the alarm
3977	// condition must exist before the alarm triggers automatic scaling activity.
3978	// The default value is 1.
3979	EvaluationPeriods *int64 `type:"integer"`
3980
3981	// The name of the CloudWatch metric that is watched to determine an alarm condition.
3982	//
3983	// MetricName is a required field
3984	MetricName *string `type:"string" required:"true"`
3985
3986	// The namespace for the CloudWatch metric. The default is AWS/ElasticMapReduce.
3987	Namespace *string `type:"string"`
3988
3989	// The period, in seconds, over which the statistic is applied. EMR CloudWatch
3990	// metrics are emitted every five minutes (300 seconds), so if an EMR CloudWatch
3991	// metric is specified, specify 300.
3992	//
3993	// Period is a required field
3994	Period *int64 `type:"integer" required:"true"`
3995
3996	// The statistic to apply to the metric associated with the alarm. The default
3997	// is AVERAGE.
3998	Statistic *string `type:"string" enum:"Statistic"`
3999
4000	// The value against which the specified statistic is compared.
4001	//
4002	// Threshold is a required field
4003	Threshold *float64 `type:"double" required:"true"`
4004
4005	// The unit of measure associated with the CloudWatch metric being watched.
4006	// The value specified for Unit must correspond to the units specified in the
4007	// CloudWatch metric.
4008	Unit *string `type:"string" enum:"Unit"`
4009}
4010
4011// String returns the string representation
4012func (s CloudWatchAlarmDefinition) String() string {
4013	return awsutil.Prettify(s)
4014}
4015
4016// GoString returns the string representation
4017func (s CloudWatchAlarmDefinition) GoString() string {
4018	return s.String()
4019}
4020
4021// Validate inspects the fields of the type to determine if they are valid.
4022func (s *CloudWatchAlarmDefinition) Validate() error {
4023	invalidParams := request.ErrInvalidParams{Context: "CloudWatchAlarmDefinition"}
4024	if s.ComparisonOperator == nil {
4025		invalidParams.Add(request.NewErrParamRequired("ComparisonOperator"))
4026	}
4027	if s.MetricName == nil {
4028		invalidParams.Add(request.NewErrParamRequired("MetricName"))
4029	}
4030	if s.Period == nil {
4031		invalidParams.Add(request.NewErrParamRequired("Period"))
4032	}
4033	if s.Threshold == nil {
4034		invalidParams.Add(request.NewErrParamRequired("Threshold"))
4035	}
4036
4037	if invalidParams.Len() > 0 {
4038		return invalidParams
4039	}
4040	return nil
4041}
4042
4043// SetComparisonOperator sets the ComparisonOperator field's value.
4044func (s *CloudWatchAlarmDefinition) SetComparisonOperator(v string) *CloudWatchAlarmDefinition {
4045	s.ComparisonOperator = &v
4046	return s
4047}
4048
4049// SetDimensions sets the Dimensions field's value.
4050func (s *CloudWatchAlarmDefinition) SetDimensions(v []*MetricDimension) *CloudWatchAlarmDefinition {
4051	s.Dimensions = v
4052	return s
4053}
4054
4055// SetEvaluationPeriods sets the EvaluationPeriods field's value.
4056func (s *CloudWatchAlarmDefinition) SetEvaluationPeriods(v int64) *CloudWatchAlarmDefinition {
4057	s.EvaluationPeriods = &v
4058	return s
4059}
4060
4061// SetMetricName sets the MetricName field's value.
4062func (s *CloudWatchAlarmDefinition) SetMetricName(v string) *CloudWatchAlarmDefinition {
4063	s.MetricName = &v
4064	return s
4065}
4066
4067// SetNamespace sets the Namespace field's value.
4068func (s *CloudWatchAlarmDefinition) SetNamespace(v string) *CloudWatchAlarmDefinition {
4069	s.Namespace = &v
4070	return s
4071}
4072
4073// SetPeriod sets the Period field's value.
4074func (s *CloudWatchAlarmDefinition) SetPeriod(v int64) *CloudWatchAlarmDefinition {
4075	s.Period = &v
4076	return s
4077}
4078
4079// SetStatistic sets the Statistic field's value.
4080func (s *CloudWatchAlarmDefinition) SetStatistic(v string) *CloudWatchAlarmDefinition {
4081	s.Statistic = &v
4082	return s
4083}
4084
4085// SetThreshold sets the Threshold field's value.
4086func (s *CloudWatchAlarmDefinition) SetThreshold(v float64) *CloudWatchAlarmDefinition {
4087	s.Threshold = &v
4088	return s
4089}
4090
4091// SetUnit sets the Unit field's value.
4092func (s *CloudWatchAlarmDefinition) SetUnit(v string) *CloudWatchAlarmDefinition {
4093	s.Unit = &v
4094	return s
4095}
4096
4097// The detailed description of the cluster.
4098type Cluster struct {
4099	_ struct{} `type:"structure"`
4100
4101	// The applications installed on this cluster.
4102	Applications []*Application `type:"list"`
4103
4104	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
4105	// The IAM role provides permissions that the automatic scaling feature requires
4106	// to launch and terminate EC2 instances in an instance group.
4107	AutoScalingRole *string `type:"string"`
4108
4109	// Specifies whether the cluster should terminate after completing all steps.
4110	AutoTerminate *bool `type:"boolean"`
4111
4112	// The Amazon Resource Name of the cluster.
4113	ClusterArn *string `min:"20" type:"string"`
4114
4115	// Applies only to Amazon EMR releases 4.x and later. The list of Configurations
4116	// supplied to the EMR cluster.
4117	Configurations []*Configuration `type:"list"`
4118
4119	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
4120	// Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.
4121	CustomAmiId *string `type:"string"`
4122
4123	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
4124	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
4125	EbsRootVolumeSize *int64 `type:"integer"`
4126
4127	// Provides information about the EC2 instances in a cluster grouped by category.
4128	// For example, key name, subnet ID, IAM instance profile, and so on.
4129	Ec2InstanceAttributes *Ec2InstanceAttributes `type:"structure"`
4130
4131	// The unique identifier for the cluster.
4132	Id *string `type:"string"`
4133
4134	//
4135	// The instance fleet configuration is available only in Amazon EMR versions
4136	// 4.8.0 and later, excluding 5.0.x versions.
4137	//
4138	// The instance group configuration of the cluster. A value of INSTANCE_GROUP
4139	// indicates a uniform instance group configuration. A value of INSTANCE_FLEET
4140	// indicates an instance fleets configuration.
4141	InstanceCollectionType *string `type:"string" enum:"InstanceCollectionType"`
4142
4143	// Attributes for Kerberos configuration when Kerberos authentication is enabled
4144	// using a security configuration. For more information see Use Kerberos Authentication
4145	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
4146	// in the EMR Management Guide.
4147	KerberosAttributes *KerberosAttributes `type:"structure"`
4148
4149	// The path to the Amazon S3 location where logs for this cluster are stored.
4150	LogUri *string `type:"string"`
4151
4152	// The DNS name of the master node. If the cluster is on a private subnet, this
4153	// is the private DNS name. On a public subnet, this is the public DNS name.
4154	MasterPublicDnsName *string `type:"string"`
4155
4156	// The name of the cluster.
4157	Name *string `type:"string"`
4158
4159	// An approximation of the cost of the cluster, represented in m1.small/hours.
4160	// This value is incremented one time for every hour an m1.small instance runs.
4161	// Larger instances are weighted more, so an EC2 instance that is roughly four
4162	// times more expensive would result in the normalized instance hours being
4163	// incremented by four. This result is only an approximation and does not reflect
4164	// the actual billing rate.
4165	NormalizedInstanceHours *int64 `type:"integer"`
4166
4167	// The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.
4168	OutpostArn *string `type:"string"`
4169
4170	// The Amazon EMR release label, which determines the version of open-source
4171	// application packages installed on the cluster. Release labels are in the
4172	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
4173	// For more information about Amazon EMR release versions and included application
4174	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
4175	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
4176	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
4177	// use AmiVersion.
4178	ReleaseLabel *string `type:"string"`
4179
4180	// Applies only when CustomAmiID is used. Specifies the type of updates that
4181	// are applied from the Amazon Linux AMI package repositories when an instance
4182	// boots using the AMI.
4183	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
4184
4185	// The AMI version requested for this cluster.
4186	RequestedAmiVersion *string `type:"string"`
4187
4188	// The AMI version running on this cluster.
4189	RunningAmiVersion *string `type:"string"`
4190
4191	// The way that individual Amazon EC2 instances terminate when an automatic
4192	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
4193	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
4194	// regardless of when the request to terminate the instance was submitted. This
4195	// option is only available with Amazon EMR 5.1.0 and later and is the default
4196	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
4197	// that Amazon EMR blacklists and drains tasks from nodes before terminating
4198	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
4199	// either behavior, Amazon EMR removes the least active nodes first and blocks
4200	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
4201	// is available only in Amazon EMR version 4.1.0 and later, and is the default
4202	// for versions of Amazon EMR earlier than 5.1.0.
4203	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
4204
4205	// The name of the security configuration applied to the cluster.
4206	SecurityConfiguration *string `type:"string"`
4207
4208	// The IAM role that will be assumed by the Amazon EMR service to access AWS
4209	// resources on your behalf.
4210	ServiceRole *string `type:"string"`
4211
4212	// The current status details about the cluster.
4213	Status *ClusterStatus `type:"structure"`
4214
4215	// Specifies the number of steps that can be executed concurrently.
4216	StepConcurrencyLevel *int64 `type:"integer"`
4217
4218	// A list of tags associated with a cluster.
4219	Tags []*Tag `type:"list"`
4220
4221	// Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances
4222	// from being terminated by an API call or user intervention, or in the event
4223	// of a cluster error.
4224	TerminationProtected *bool `type:"boolean"`
4225
4226	// Indicates whether the cluster is visible to all IAM users of the AWS account
4227	// associated with the cluster. The default value, true, indicates that all
4228	// IAM users in the AWS account can perform cluster actions if they have the
4229	// proper IAM policy permissions. If this value is false, only the IAM user
4230	// that created the cluster can perform actions. This value can be changed on
4231	// a running cluster by using the SetVisibleToAllUsers action. You can override
4232	// the default value of true when you create a cluster by using the VisibleToAllUsers
4233	// parameter of the RunJobFlow action.
4234	VisibleToAllUsers *bool `type:"boolean"`
4235}
4236
4237// String returns the string representation
4238func (s Cluster) String() string {
4239	return awsutil.Prettify(s)
4240}
4241
4242// GoString returns the string representation
4243func (s Cluster) GoString() string {
4244	return s.String()
4245}
4246
4247// SetApplications sets the Applications field's value.
4248func (s *Cluster) SetApplications(v []*Application) *Cluster {
4249	s.Applications = v
4250	return s
4251}
4252
4253// SetAutoScalingRole sets the AutoScalingRole field's value.
4254func (s *Cluster) SetAutoScalingRole(v string) *Cluster {
4255	s.AutoScalingRole = &v
4256	return s
4257}
4258
4259// SetAutoTerminate sets the AutoTerminate field's value.
4260func (s *Cluster) SetAutoTerminate(v bool) *Cluster {
4261	s.AutoTerminate = &v
4262	return s
4263}
4264
4265// SetClusterArn sets the ClusterArn field's value.
4266func (s *Cluster) SetClusterArn(v string) *Cluster {
4267	s.ClusterArn = &v
4268	return s
4269}
4270
4271// SetConfigurations sets the Configurations field's value.
4272func (s *Cluster) SetConfigurations(v []*Configuration) *Cluster {
4273	s.Configurations = v
4274	return s
4275}
4276
4277// SetCustomAmiId sets the CustomAmiId field's value.
4278func (s *Cluster) SetCustomAmiId(v string) *Cluster {
4279	s.CustomAmiId = &v
4280	return s
4281}
4282
4283// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
4284func (s *Cluster) SetEbsRootVolumeSize(v int64) *Cluster {
4285	s.EbsRootVolumeSize = &v
4286	return s
4287}
4288
4289// SetEc2InstanceAttributes sets the Ec2InstanceAttributes field's value.
4290func (s *Cluster) SetEc2InstanceAttributes(v *Ec2InstanceAttributes) *Cluster {
4291	s.Ec2InstanceAttributes = v
4292	return s
4293}
4294
4295// SetId sets the Id field's value.
4296func (s *Cluster) SetId(v string) *Cluster {
4297	s.Id = &v
4298	return s
4299}
4300
4301// SetInstanceCollectionType sets the InstanceCollectionType field's value.
4302func (s *Cluster) SetInstanceCollectionType(v string) *Cluster {
4303	s.InstanceCollectionType = &v
4304	return s
4305}
4306
4307// SetKerberosAttributes sets the KerberosAttributes field's value.
4308func (s *Cluster) SetKerberosAttributes(v *KerberosAttributes) *Cluster {
4309	s.KerberosAttributes = v
4310	return s
4311}
4312
4313// SetLogUri sets the LogUri field's value.
4314func (s *Cluster) SetLogUri(v string) *Cluster {
4315	s.LogUri = &v
4316	return s
4317}
4318
4319// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
4320func (s *Cluster) SetMasterPublicDnsName(v string) *Cluster {
4321	s.MasterPublicDnsName = &v
4322	return s
4323}
4324
4325// SetName sets the Name field's value.
4326func (s *Cluster) SetName(v string) *Cluster {
4327	s.Name = &v
4328	return s
4329}
4330
4331// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4332func (s *Cluster) SetNormalizedInstanceHours(v int64) *Cluster {
4333	s.NormalizedInstanceHours = &v
4334	return s
4335}
4336
4337// SetOutpostArn sets the OutpostArn field's value.
4338func (s *Cluster) SetOutpostArn(v string) *Cluster {
4339	s.OutpostArn = &v
4340	return s
4341}
4342
4343// SetReleaseLabel sets the ReleaseLabel field's value.
4344func (s *Cluster) SetReleaseLabel(v string) *Cluster {
4345	s.ReleaseLabel = &v
4346	return s
4347}
4348
4349// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
4350func (s *Cluster) SetRepoUpgradeOnBoot(v string) *Cluster {
4351	s.RepoUpgradeOnBoot = &v
4352	return s
4353}
4354
4355// SetRequestedAmiVersion sets the RequestedAmiVersion field's value.
4356func (s *Cluster) SetRequestedAmiVersion(v string) *Cluster {
4357	s.RequestedAmiVersion = &v
4358	return s
4359}
4360
4361// SetRunningAmiVersion sets the RunningAmiVersion field's value.
4362func (s *Cluster) SetRunningAmiVersion(v string) *Cluster {
4363	s.RunningAmiVersion = &v
4364	return s
4365}
4366
4367// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
4368func (s *Cluster) SetScaleDownBehavior(v string) *Cluster {
4369	s.ScaleDownBehavior = &v
4370	return s
4371}
4372
4373// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4374func (s *Cluster) SetSecurityConfiguration(v string) *Cluster {
4375	s.SecurityConfiguration = &v
4376	return s
4377}
4378
4379// SetServiceRole sets the ServiceRole field's value.
4380func (s *Cluster) SetServiceRole(v string) *Cluster {
4381	s.ServiceRole = &v
4382	return s
4383}
4384
4385// SetStatus sets the Status field's value.
4386func (s *Cluster) SetStatus(v *ClusterStatus) *Cluster {
4387	s.Status = v
4388	return s
4389}
4390
4391// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
4392func (s *Cluster) SetStepConcurrencyLevel(v int64) *Cluster {
4393	s.StepConcurrencyLevel = &v
4394	return s
4395}
4396
4397// SetTags sets the Tags field's value.
4398func (s *Cluster) SetTags(v []*Tag) *Cluster {
4399	s.Tags = v
4400	return s
4401}
4402
4403// SetTerminationProtected sets the TerminationProtected field's value.
4404func (s *Cluster) SetTerminationProtected(v bool) *Cluster {
4405	s.TerminationProtected = &v
4406	return s
4407}
4408
4409// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
4410func (s *Cluster) SetVisibleToAllUsers(v bool) *Cluster {
4411	s.VisibleToAllUsers = &v
4412	return s
4413}
4414
4415// The reason that the cluster changed to its current state.
4416type ClusterStateChangeReason struct {
4417	_ struct{} `type:"structure"`
4418
4419	// The programmatic code for the state change reason.
4420	Code *string `type:"string" enum:"ClusterStateChangeReasonCode"`
4421
4422	// The descriptive message for the state change reason.
4423	Message *string `type:"string"`
4424}
4425
4426// String returns the string representation
4427func (s ClusterStateChangeReason) String() string {
4428	return awsutil.Prettify(s)
4429}
4430
4431// GoString returns the string representation
4432func (s ClusterStateChangeReason) GoString() string {
4433	return s.String()
4434}
4435
4436// SetCode sets the Code field's value.
4437func (s *ClusterStateChangeReason) SetCode(v string) *ClusterStateChangeReason {
4438	s.Code = &v
4439	return s
4440}
4441
4442// SetMessage sets the Message field's value.
4443func (s *ClusterStateChangeReason) SetMessage(v string) *ClusterStateChangeReason {
4444	s.Message = &v
4445	return s
4446}
4447
4448// The detailed status of the cluster.
4449type ClusterStatus struct {
4450	_ struct{} `type:"structure"`
4451
4452	// The current state of the cluster.
4453	State *string `type:"string" enum:"ClusterState"`
4454
4455	// The reason for the cluster status change.
4456	StateChangeReason *ClusterStateChangeReason `type:"structure"`
4457
4458	// A timeline that represents the status of a cluster over the lifetime of the
4459	// cluster.
4460	Timeline *ClusterTimeline `type:"structure"`
4461}
4462
4463// String returns the string representation
4464func (s ClusterStatus) String() string {
4465	return awsutil.Prettify(s)
4466}
4467
4468// GoString returns the string representation
4469func (s ClusterStatus) GoString() string {
4470	return s.String()
4471}
4472
4473// SetState sets the State field's value.
4474func (s *ClusterStatus) SetState(v string) *ClusterStatus {
4475	s.State = &v
4476	return s
4477}
4478
4479// SetStateChangeReason sets the StateChangeReason field's value.
4480func (s *ClusterStatus) SetStateChangeReason(v *ClusterStateChangeReason) *ClusterStatus {
4481	s.StateChangeReason = v
4482	return s
4483}
4484
4485// SetTimeline sets the Timeline field's value.
4486func (s *ClusterStatus) SetTimeline(v *ClusterTimeline) *ClusterStatus {
4487	s.Timeline = v
4488	return s
4489}
4490
4491// The summary description of the cluster.
4492type ClusterSummary struct {
4493	_ struct{} `type:"structure"`
4494
4495	// The Amazon Resource Name of the cluster.
4496	ClusterArn *string `min:"20" type:"string"`
4497
4498	// The unique identifier for the cluster.
4499	Id *string `type:"string"`
4500
4501	// The name of the cluster.
4502	Name *string `type:"string"`
4503
4504	// An approximation of the cost of the cluster, represented in m1.small/hours.
4505	// This value is incremented one time for every hour an m1.small instance runs.
4506	// Larger instances are weighted more, so an EC2 instance that is roughly four
4507	// times more expensive would result in the normalized instance hours being
4508	// incremented by four. This result is only an approximation and does not reflect
4509	// the actual billing rate.
4510	NormalizedInstanceHours *int64 `type:"integer"`
4511
4512	// The Amazon Resource Name (ARN) of the Outpost where the cluster is launched.
4513	OutpostArn *string `type:"string"`
4514
4515	// The details about the current status of the cluster.
4516	Status *ClusterStatus `type:"structure"`
4517}
4518
4519// String returns the string representation
4520func (s ClusterSummary) String() string {
4521	return awsutil.Prettify(s)
4522}
4523
4524// GoString returns the string representation
4525func (s ClusterSummary) GoString() string {
4526	return s.String()
4527}
4528
4529// SetClusterArn sets the ClusterArn field's value.
4530func (s *ClusterSummary) SetClusterArn(v string) *ClusterSummary {
4531	s.ClusterArn = &v
4532	return s
4533}
4534
4535// SetId sets the Id field's value.
4536func (s *ClusterSummary) SetId(v string) *ClusterSummary {
4537	s.Id = &v
4538	return s
4539}
4540
4541// SetName sets the Name field's value.
4542func (s *ClusterSummary) SetName(v string) *ClusterSummary {
4543	s.Name = &v
4544	return s
4545}
4546
4547// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
4548func (s *ClusterSummary) SetNormalizedInstanceHours(v int64) *ClusterSummary {
4549	s.NormalizedInstanceHours = &v
4550	return s
4551}
4552
4553// SetOutpostArn sets the OutpostArn field's value.
4554func (s *ClusterSummary) SetOutpostArn(v string) *ClusterSummary {
4555	s.OutpostArn = &v
4556	return s
4557}
4558
4559// SetStatus sets the Status field's value.
4560func (s *ClusterSummary) SetStatus(v *ClusterStatus) *ClusterSummary {
4561	s.Status = v
4562	return s
4563}
4564
4565// Represents the timeline of the cluster's lifecycle.
4566type ClusterTimeline struct {
4567	_ struct{} `type:"structure"`
4568
4569	// The creation date and time of the cluster.
4570	CreationDateTime *time.Time `type:"timestamp"`
4571
4572	// The date and time when the cluster was terminated.
4573	EndDateTime *time.Time `type:"timestamp"`
4574
4575	// The date and time when the cluster was ready to execute steps.
4576	ReadyDateTime *time.Time `type:"timestamp"`
4577}
4578
4579// String returns the string representation
4580func (s ClusterTimeline) String() string {
4581	return awsutil.Prettify(s)
4582}
4583
4584// GoString returns the string representation
4585func (s ClusterTimeline) GoString() string {
4586	return s.String()
4587}
4588
4589// SetCreationDateTime sets the CreationDateTime field's value.
4590func (s *ClusterTimeline) SetCreationDateTime(v time.Time) *ClusterTimeline {
4591	s.CreationDateTime = &v
4592	return s
4593}
4594
4595// SetEndDateTime sets the EndDateTime field's value.
4596func (s *ClusterTimeline) SetEndDateTime(v time.Time) *ClusterTimeline {
4597	s.EndDateTime = &v
4598	return s
4599}
4600
4601// SetReadyDateTime sets the ReadyDateTime field's value.
4602func (s *ClusterTimeline) SetReadyDateTime(v time.Time) *ClusterTimeline {
4603	s.ReadyDateTime = &v
4604	return s
4605}
4606
4607// An entity describing an executable that runs on a cluster.
4608type Command struct {
4609	_ struct{} `type:"structure"`
4610
4611	// Arguments for Amazon EMR to pass to the command for execution.
4612	Args []*string `type:"list"`
4613
4614	// The name of the command.
4615	Name *string `type:"string"`
4616
4617	// The Amazon S3 location of the command script.
4618	ScriptPath *string `type:"string"`
4619}
4620
4621// String returns the string representation
4622func (s Command) String() string {
4623	return awsutil.Prettify(s)
4624}
4625
4626// GoString returns the string representation
4627func (s Command) GoString() string {
4628	return s.String()
4629}
4630
4631// SetArgs sets the Args field's value.
4632func (s *Command) SetArgs(v []*string) *Command {
4633	s.Args = v
4634	return s
4635}
4636
4637// SetName sets the Name field's value.
4638func (s *Command) SetName(v string) *Command {
4639	s.Name = &v
4640	return s
4641}
4642
4643// SetScriptPath sets the ScriptPath field's value.
4644func (s *Command) SetScriptPath(v string) *Command {
4645	s.ScriptPath = &v
4646	return s
4647}
4648
4649//
4650// Amazon EMR releases 4.x or later.
4651//
4652// An optional configuration specification to be used when provisioning cluster
4653// instances, which can include configurations for applications and software
4654// bundled with Amazon EMR. A configuration consists of a classification, properties,
4655// and optional nested configurations. A classification refers to an application-specific
4656// configuration file. Properties are the settings you want to change in that
4657// file. For more information, see Configuring Applications (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html).
4658type Configuration struct {
4659	_ struct{} `type:"structure"`
4660
4661	// The classification within a configuration.
4662	Classification *string `type:"string"`
4663
4664	// A list of additional configurations to apply within a configuration object.
4665	Configurations []*Configuration `type:"list"`
4666
4667	// A set of properties specified within a configuration classification.
4668	Properties map[string]*string `type:"map"`
4669}
4670
4671// String returns the string representation
4672func (s Configuration) String() string {
4673	return awsutil.Prettify(s)
4674}
4675
4676// GoString returns the string representation
4677func (s Configuration) GoString() string {
4678	return s.String()
4679}
4680
4681// SetClassification sets the Classification field's value.
4682func (s *Configuration) SetClassification(v string) *Configuration {
4683	s.Classification = &v
4684	return s
4685}
4686
4687// SetConfigurations sets the Configurations field's value.
4688func (s *Configuration) SetConfigurations(v []*Configuration) *Configuration {
4689	s.Configurations = v
4690	return s
4691}
4692
4693// SetProperties sets the Properties field's value.
4694func (s *Configuration) SetProperties(v map[string]*string) *Configuration {
4695	s.Properties = v
4696	return s
4697}
4698
4699type CreateSecurityConfigurationInput struct {
4700	_ struct{} `type:"structure"`
4701
4702	// The name of the security configuration.
4703	//
4704	// Name is a required field
4705	Name *string `type:"string" required:"true"`
4706
4707	// The security configuration details in JSON format. For JSON parameters and
4708	// examples, see Use Security Configurations to Set Up Cluster Security (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html)
4709	// in the Amazon EMR Management Guide.
4710	//
4711	// SecurityConfiguration is a required field
4712	SecurityConfiguration *string `type:"string" required:"true"`
4713}
4714
4715// String returns the string representation
4716func (s CreateSecurityConfigurationInput) String() string {
4717	return awsutil.Prettify(s)
4718}
4719
4720// GoString returns the string representation
4721func (s CreateSecurityConfigurationInput) GoString() string {
4722	return s.String()
4723}
4724
4725// Validate inspects the fields of the type to determine if they are valid.
4726func (s *CreateSecurityConfigurationInput) Validate() error {
4727	invalidParams := request.ErrInvalidParams{Context: "CreateSecurityConfigurationInput"}
4728	if s.Name == nil {
4729		invalidParams.Add(request.NewErrParamRequired("Name"))
4730	}
4731	if s.SecurityConfiguration == nil {
4732		invalidParams.Add(request.NewErrParamRequired("SecurityConfiguration"))
4733	}
4734
4735	if invalidParams.Len() > 0 {
4736		return invalidParams
4737	}
4738	return nil
4739}
4740
4741// SetName sets the Name field's value.
4742func (s *CreateSecurityConfigurationInput) SetName(v string) *CreateSecurityConfigurationInput {
4743	s.Name = &v
4744	return s
4745}
4746
4747// SetSecurityConfiguration sets the SecurityConfiguration field's value.
4748func (s *CreateSecurityConfigurationInput) SetSecurityConfiguration(v string) *CreateSecurityConfigurationInput {
4749	s.SecurityConfiguration = &v
4750	return s
4751}
4752
4753type CreateSecurityConfigurationOutput struct {
4754	_ struct{} `type:"structure"`
4755
4756	// The date and time the security configuration was created.
4757	//
4758	// CreationDateTime is a required field
4759	CreationDateTime *time.Time `type:"timestamp" required:"true"`
4760
4761	// The name of the security configuration.
4762	//
4763	// Name is a required field
4764	Name *string `type:"string" required:"true"`
4765}
4766
4767// String returns the string representation
4768func (s CreateSecurityConfigurationOutput) String() string {
4769	return awsutil.Prettify(s)
4770}
4771
4772// GoString returns the string representation
4773func (s CreateSecurityConfigurationOutput) GoString() string {
4774	return s.String()
4775}
4776
4777// SetCreationDateTime sets the CreationDateTime field's value.
4778func (s *CreateSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *CreateSecurityConfigurationOutput {
4779	s.CreationDateTime = &v
4780	return s
4781}
4782
4783// SetName sets the Name field's value.
4784func (s *CreateSecurityConfigurationOutput) SetName(v string) *CreateSecurityConfigurationOutput {
4785	s.Name = &v
4786	return s
4787}
4788
4789type DeleteSecurityConfigurationInput struct {
4790	_ struct{} `type:"structure"`
4791
4792	// The name of the security configuration.
4793	//
4794	// Name is a required field
4795	Name *string `type:"string" required:"true"`
4796}
4797
4798// String returns the string representation
4799func (s DeleteSecurityConfigurationInput) String() string {
4800	return awsutil.Prettify(s)
4801}
4802
4803// GoString returns the string representation
4804func (s DeleteSecurityConfigurationInput) GoString() string {
4805	return s.String()
4806}
4807
4808// Validate inspects the fields of the type to determine if they are valid.
4809func (s *DeleteSecurityConfigurationInput) Validate() error {
4810	invalidParams := request.ErrInvalidParams{Context: "DeleteSecurityConfigurationInput"}
4811	if s.Name == nil {
4812		invalidParams.Add(request.NewErrParamRequired("Name"))
4813	}
4814
4815	if invalidParams.Len() > 0 {
4816		return invalidParams
4817	}
4818	return nil
4819}
4820
4821// SetName sets the Name field's value.
4822func (s *DeleteSecurityConfigurationInput) SetName(v string) *DeleteSecurityConfigurationInput {
4823	s.Name = &v
4824	return s
4825}
4826
4827type DeleteSecurityConfigurationOutput struct {
4828	_ struct{} `type:"structure"`
4829}
4830
4831// String returns the string representation
4832func (s DeleteSecurityConfigurationOutput) String() string {
4833	return awsutil.Prettify(s)
4834}
4835
4836// GoString returns the string representation
4837func (s DeleteSecurityConfigurationOutput) GoString() string {
4838	return s.String()
4839}
4840
4841// This input determines which cluster to describe.
4842type DescribeClusterInput struct {
4843	_ struct{} `type:"structure"`
4844
4845	// The identifier of the cluster to describe.
4846	//
4847	// ClusterId is a required field
4848	ClusterId *string `type:"string" required:"true"`
4849}
4850
4851// String returns the string representation
4852func (s DescribeClusterInput) String() string {
4853	return awsutil.Prettify(s)
4854}
4855
4856// GoString returns the string representation
4857func (s DescribeClusterInput) GoString() string {
4858	return s.String()
4859}
4860
4861// Validate inspects the fields of the type to determine if they are valid.
4862func (s *DescribeClusterInput) Validate() error {
4863	invalidParams := request.ErrInvalidParams{Context: "DescribeClusterInput"}
4864	if s.ClusterId == nil {
4865		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
4866	}
4867
4868	if invalidParams.Len() > 0 {
4869		return invalidParams
4870	}
4871	return nil
4872}
4873
4874// SetClusterId sets the ClusterId field's value.
4875func (s *DescribeClusterInput) SetClusterId(v string) *DescribeClusterInput {
4876	s.ClusterId = &v
4877	return s
4878}
4879
4880// This output contains the description of the cluster.
4881type DescribeClusterOutput struct {
4882	_ struct{} `type:"structure"`
4883
4884	// This output contains the details for the requested cluster.
4885	Cluster *Cluster `type:"structure"`
4886}
4887
4888// String returns the string representation
4889func (s DescribeClusterOutput) String() string {
4890	return awsutil.Prettify(s)
4891}
4892
4893// GoString returns the string representation
4894func (s DescribeClusterOutput) GoString() string {
4895	return s.String()
4896}
4897
4898// SetCluster sets the Cluster field's value.
4899func (s *DescribeClusterOutput) SetCluster(v *Cluster) *DescribeClusterOutput {
4900	s.Cluster = v
4901	return s
4902}
4903
4904// The input for the DescribeJobFlows operation.
4905type DescribeJobFlowsInput struct {
4906	_ struct{} `type:"structure"`
4907
4908	// Return only job flows created after this date and time.
4909	CreatedAfter *time.Time `type:"timestamp"`
4910
4911	// Return only job flows created before this date and time.
4912	CreatedBefore *time.Time `type:"timestamp"`
4913
4914	// Return only job flows whose job flow ID is contained in this list.
4915	JobFlowIds []*string `type:"list"`
4916
4917	// Return only job flows whose state is contained in this list.
4918	JobFlowStates []*string `type:"list"`
4919}
4920
4921// String returns the string representation
4922func (s DescribeJobFlowsInput) String() string {
4923	return awsutil.Prettify(s)
4924}
4925
4926// GoString returns the string representation
4927func (s DescribeJobFlowsInput) GoString() string {
4928	return s.String()
4929}
4930
4931// SetCreatedAfter sets the CreatedAfter field's value.
4932func (s *DescribeJobFlowsInput) SetCreatedAfter(v time.Time) *DescribeJobFlowsInput {
4933	s.CreatedAfter = &v
4934	return s
4935}
4936
4937// SetCreatedBefore sets the CreatedBefore field's value.
4938func (s *DescribeJobFlowsInput) SetCreatedBefore(v time.Time) *DescribeJobFlowsInput {
4939	s.CreatedBefore = &v
4940	return s
4941}
4942
4943// SetJobFlowIds sets the JobFlowIds field's value.
4944func (s *DescribeJobFlowsInput) SetJobFlowIds(v []*string) *DescribeJobFlowsInput {
4945	s.JobFlowIds = v
4946	return s
4947}
4948
4949// SetJobFlowStates sets the JobFlowStates field's value.
4950func (s *DescribeJobFlowsInput) SetJobFlowStates(v []*string) *DescribeJobFlowsInput {
4951	s.JobFlowStates = v
4952	return s
4953}
4954
4955// The output for the DescribeJobFlows operation.
4956type DescribeJobFlowsOutput struct {
4957	_ struct{} `type:"structure"`
4958
4959	// A list of job flows matching the parameters supplied.
4960	JobFlows []*JobFlowDetail `type:"list"`
4961}
4962
4963// String returns the string representation
4964func (s DescribeJobFlowsOutput) String() string {
4965	return awsutil.Prettify(s)
4966}
4967
4968// GoString returns the string representation
4969func (s DescribeJobFlowsOutput) GoString() string {
4970	return s.String()
4971}
4972
4973// SetJobFlows sets the JobFlows field's value.
4974func (s *DescribeJobFlowsOutput) SetJobFlows(v []*JobFlowDetail) *DescribeJobFlowsOutput {
4975	s.JobFlows = v
4976	return s
4977}
4978
4979type DescribeSecurityConfigurationInput struct {
4980	_ struct{} `type:"structure"`
4981
4982	// The name of the security configuration.
4983	//
4984	// Name is a required field
4985	Name *string `type:"string" required:"true"`
4986}
4987
4988// String returns the string representation
4989func (s DescribeSecurityConfigurationInput) String() string {
4990	return awsutil.Prettify(s)
4991}
4992
4993// GoString returns the string representation
4994func (s DescribeSecurityConfigurationInput) GoString() string {
4995	return s.String()
4996}
4997
4998// Validate inspects the fields of the type to determine if they are valid.
4999func (s *DescribeSecurityConfigurationInput) Validate() error {
5000	invalidParams := request.ErrInvalidParams{Context: "DescribeSecurityConfigurationInput"}
5001	if s.Name == nil {
5002		invalidParams.Add(request.NewErrParamRequired("Name"))
5003	}
5004
5005	if invalidParams.Len() > 0 {
5006		return invalidParams
5007	}
5008	return nil
5009}
5010
5011// SetName sets the Name field's value.
5012func (s *DescribeSecurityConfigurationInput) SetName(v string) *DescribeSecurityConfigurationInput {
5013	s.Name = &v
5014	return s
5015}
5016
5017type DescribeSecurityConfigurationOutput struct {
5018	_ struct{} `type:"structure"`
5019
5020	// The date and time the security configuration was created
5021	CreationDateTime *time.Time `type:"timestamp"`
5022
5023	// The name of the security configuration.
5024	Name *string `type:"string"`
5025
5026	// The security configuration details in JSON format.
5027	SecurityConfiguration *string `type:"string"`
5028}
5029
5030// String returns the string representation
5031func (s DescribeSecurityConfigurationOutput) String() string {
5032	return awsutil.Prettify(s)
5033}
5034
5035// GoString returns the string representation
5036func (s DescribeSecurityConfigurationOutput) GoString() string {
5037	return s.String()
5038}
5039
5040// SetCreationDateTime sets the CreationDateTime field's value.
5041func (s *DescribeSecurityConfigurationOutput) SetCreationDateTime(v time.Time) *DescribeSecurityConfigurationOutput {
5042	s.CreationDateTime = &v
5043	return s
5044}
5045
5046// SetName sets the Name field's value.
5047func (s *DescribeSecurityConfigurationOutput) SetName(v string) *DescribeSecurityConfigurationOutput {
5048	s.Name = &v
5049	return s
5050}
5051
5052// SetSecurityConfiguration sets the SecurityConfiguration field's value.
5053func (s *DescribeSecurityConfigurationOutput) SetSecurityConfiguration(v string) *DescribeSecurityConfigurationOutput {
5054	s.SecurityConfiguration = &v
5055	return s
5056}
5057
5058// This input determines which step to describe.
5059type DescribeStepInput struct {
5060	_ struct{} `type:"structure"`
5061
5062	// The identifier of the cluster with steps to describe.
5063	//
5064	// ClusterId is a required field
5065	ClusterId *string `type:"string" required:"true"`
5066
5067	// The identifier of the step to describe.
5068	//
5069	// StepId is a required field
5070	StepId *string `type:"string" required:"true"`
5071}
5072
5073// String returns the string representation
5074func (s DescribeStepInput) String() string {
5075	return awsutil.Prettify(s)
5076}
5077
5078// GoString returns the string representation
5079func (s DescribeStepInput) GoString() string {
5080	return s.String()
5081}
5082
5083// Validate inspects the fields of the type to determine if they are valid.
5084func (s *DescribeStepInput) Validate() error {
5085	invalidParams := request.ErrInvalidParams{Context: "DescribeStepInput"}
5086	if s.ClusterId == nil {
5087		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
5088	}
5089	if s.StepId == nil {
5090		invalidParams.Add(request.NewErrParamRequired("StepId"))
5091	}
5092
5093	if invalidParams.Len() > 0 {
5094		return invalidParams
5095	}
5096	return nil
5097}
5098
5099// SetClusterId sets the ClusterId field's value.
5100func (s *DescribeStepInput) SetClusterId(v string) *DescribeStepInput {
5101	s.ClusterId = &v
5102	return s
5103}
5104
5105// SetStepId sets the StepId field's value.
5106func (s *DescribeStepInput) SetStepId(v string) *DescribeStepInput {
5107	s.StepId = &v
5108	return s
5109}
5110
5111// This output contains the description of the cluster step.
5112type DescribeStepOutput struct {
5113	_ struct{} `type:"structure"`
5114
5115	// The step details for the requested step identifier.
5116	Step *Step `type:"structure"`
5117}
5118
5119// String returns the string representation
5120func (s DescribeStepOutput) String() string {
5121	return awsutil.Prettify(s)
5122}
5123
5124// GoString returns the string representation
5125func (s DescribeStepOutput) GoString() string {
5126	return s.String()
5127}
5128
5129// SetStep sets the Step field's value.
5130func (s *DescribeStepOutput) SetStep(v *Step) *DescribeStepOutput {
5131	s.Step = v
5132	return s
5133}
5134
5135// Configuration of requested EBS block device associated with the instance
5136// group.
5137type EbsBlockDevice struct {
5138	_ struct{} `type:"structure"`
5139
5140	// The device name that is exposed to the instance, such as /dev/sdh.
5141	Device *string `type:"string"`
5142
5143	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
5144	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
5145	VolumeSpecification *VolumeSpecification `type:"structure"`
5146}
5147
5148// String returns the string representation
5149func (s EbsBlockDevice) String() string {
5150	return awsutil.Prettify(s)
5151}
5152
5153// GoString returns the string representation
5154func (s EbsBlockDevice) GoString() string {
5155	return s.String()
5156}
5157
5158// SetDevice sets the Device field's value.
5159func (s *EbsBlockDevice) SetDevice(v string) *EbsBlockDevice {
5160	s.Device = &v
5161	return s
5162}
5163
5164// SetVolumeSpecification sets the VolumeSpecification field's value.
5165func (s *EbsBlockDevice) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDevice {
5166	s.VolumeSpecification = v
5167	return s
5168}
5169
5170// Configuration of requested EBS block device associated with the instance
5171// group with count of volumes that will be associated to every instance.
5172type EbsBlockDeviceConfig struct {
5173	_ struct{} `type:"structure"`
5174
5175	// EBS volume specifications such as volume type, IOPS, and size (GiB) that
5176	// will be requested for the EBS volume attached to an EC2 instance in the cluster.
5177	//
5178	// VolumeSpecification is a required field
5179	VolumeSpecification *VolumeSpecification `type:"structure" required:"true"`
5180
5181	// Number of EBS volumes with a specific volume configuration that will be associated
5182	// with every instance in the instance group
5183	VolumesPerInstance *int64 `type:"integer"`
5184}
5185
5186// String returns the string representation
5187func (s EbsBlockDeviceConfig) String() string {
5188	return awsutil.Prettify(s)
5189}
5190
5191// GoString returns the string representation
5192func (s EbsBlockDeviceConfig) GoString() string {
5193	return s.String()
5194}
5195
5196// Validate inspects the fields of the type to determine if they are valid.
5197func (s *EbsBlockDeviceConfig) Validate() error {
5198	invalidParams := request.ErrInvalidParams{Context: "EbsBlockDeviceConfig"}
5199	if s.VolumeSpecification == nil {
5200		invalidParams.Add(request.NewErrParamRequired("VolumeSpecification"))
5201	}
5202	if s.VolumeSpecification != nil {
5203		if err := s.VolumeSpecification.Validate(); err != nil {
5204			invalidParams.AddNested("VolumeSpecification", err.(request.ErrInvalidParams))
5205		}
5206	}
5207
5208	if invalidParams.Len() > 0 {
5209		return invalidParams
5210	}
5211	return nil
5212}
5213
5214// SetVolumeSpecification sets the VolumeSpecification field's value.
5215func (s *EbsBlockDeviceConfig) SetVolumeSpecification(v *VolumeSpecification) *EbsBlockDeviceConfig {
5216	s.VolumeSpecification = v
5217	return s
5218}
5219
5220// SetVolumesPerInstance sets the VolumesPerInstance field's value.
5221func (s *EbsBlockDeviceConfig) SetVolumesPerInstance(v int64) *EbsBlockDeviceConfig {
5222	s.VolumesPerInstance = &v
5223	return s
5224}
5225
5226// The Amazon EBS configuration of a cluster instance.
5227type EbsConfiguration struct {
5228	_ struct{} `type:"structure"`
5229
5230	// An array of Amazon EBS volume specifications attached to a cluster instance.
5231	EbsBlockDeviceConfigs []*EbsBlockDeviceConfig `type:"list"`
5232
5233	// Indicates whether an Amazon EBS volume is EBS-optimized.
5234	EbsOptimized *bool `type:"boolean"`
5235}
5236
5237// String returns the string representation
5238func (s EbsConfiguration) String() string {
5239	return awsutil.Prettify(s)
5240}
5241
5242// GoString returns the string representation
5243func (s EbsConfiguration) GoString() string {
5244	return s.String()
5245}
5246
5247// Validate inspects the fields of the type to determine if they are valid.
5248func (s *EbsConfiguration) Validate() error {
5249	invalidParams := request.ErrInvalidParams{Context: "EbsConfiguration"}
5250	if s.EbsBlockDeviceConfigs != nil {
5251		for i, v := range s.EbsBlockDeviceConfigs {
5252			if v == nil {
5253				continue
5254			}
5255			if err := v.Validate(); err != nil {
5256				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EbsBlockDeviceConfigs", i), err.(request.ErrInvalidParams))
5257			}
5258		}
5259	}
5260
5261	if invalidParams.Len() > 0 {
5262		return invalidParams
5263	}
5264	return nil
5265}
5266
5267// SetEbsBlockDeviceConfigs sets the EbsBlockDeviceConfigs field's value.
5268func (s *EbsConfiguration) SetEbsBlockDeviceConfigs(v []*EbsBlockDeviceConfig) *EbsConfiguration {
5269	s.EbsBlockDeviceConfigs = v
5270	return s
5271}
5272
5273// SetEbsOptimized sets the EbsOptimized field's value.
5274func (s *EbsConfiguration) SetEbsOptimized(v bool) *EbsConfiguration {
5275	s.EbsOptimized = &v
5276	return s
5277}
5278
5279// EBS block device that's attached to an EC2 instance.
5280type EbsVolume struct {
5281	_ struct{} `type:"structure"`
5282
5283	// The device name that is exposed to the instance, such as /dev/sdh.
5284	Device *string `type:"string"`
5285
5286	// The volume identifier of the EBS volume.
5287	VolumeId *string `type:"string"`
5288}
5289
5290// String returns the string representation
5291func (s EbsVolume) String() string {
5292	return awsutil.Prettify(s)
5293}
5294
5295// GoString returns the string representation
5296func (s EbsVolume) GoString() string {
5297	return s.String()
5298}
5299
5300// SetDevice sets the Device field's value.
5301func (s *EbsVolume) SetDevice(v string) *EbsVolume {
5302	s.Device = &v
5303	return s
5304}
5305
5306// SetVolumeId sets the VolumeId field's value.
5307func (s *EbsVolume) SetVolumeId(v string) *EbsVolume {
5308	s.VolumeId = &v
5309	return s
5310}
5311
5312// Provides information about the EC2 instances in a cluster grouped by category.
5313// For example, key name, subnet ID, IAM instance profile, and so on.
5314type Ec2InstanceAttributes struct {
5315	_ struct{} `type:"structure"`
5316
5317	// A list of additional Amazon EC2 security group IDs for the master node.
5318	AdditionalMasterSecurityGroups []*string `type:"list"`
5319
5320	// A list of additional Amazon EC2 security group IDs for the core and task
5321	// nodes.
5322	AdditionalSlaveSecurityGroups []*string `type:"list"`
5323
5324	// The Availability Zone in which the cluster will run.
5325	Ec2AvailabilityZone *string `type:"string"`
5326
5327	// The name of the Amazon EC2 key pair to use when connecting with SSH into
5328	// the master node as a user named "hadoop".
5329	Ec2KeyName *string `type:"string"`
5330
5331	// Set this parameter to the identifier of the Amazon VPC subnet where you want
5332	// the cluster to launch. If you do not specify this value, and your account
5333	// supports EC2-Classic, the cluster launches in EC2-Classic.
5334	Ec2SubnetId *string `type:"string"`
5335
5336	// The identifier of the Amazon EC2 security group for the master node.
5337	EmrManagedMasterSecurityGroup *string `type:"string"`
5338
5339	// The identifier of the Amazon EC2 security group for the core and task nodes.
5340	EmrManagedSlaveSecurityGroup *string `type:"string"`
5341
5342	// The IAM role that was specified when the cluster was launched. The EC2 instances
5343	// of the cluster assume this role.
5344	IamInstanceProfile *string `type:"string"`
5345
5346	// Applies to clusters configured with the instance fleets option. Specifies
5347	// one or more Availability Zones in which to launch EC2 cluster instances when
5348	// the EC2-Classic network configuration is supported. Amazon EMR chooses the
5349	// Availability Zone with the best fit from among the list of RequestedEc2AvailabilityZones,
5350	// and then launches all cluster instances within that Availability Zone. If
5351	// you do not specify this value, Amazon EMR chooses the Availability Zone for
5352	// you. RequestedEc2SubnetIDs and RequestedEc2AvailabilityZones cannot be specified
5353	// together.
5354	RequestedEc2AvailabilityZones []*string `type:"list"`
5355
5356	// Applies to clusters configured with the instance fleets option. Specifies
5357	// the unique identifier of one or more Amazon EC2 subnets in which to launch
5358	// EC2 cluster instances. Subnets must exist within the same VPC. Amazon EMR
5359	// chooses the EC2 subnet with the best fit from among the list of RequestedEc2SubnetIds,
5360	// and then launches all cluster instances within that Subnet. If this value
5361	// is not specified, and the account and Region support EC2-Classic networks,
5362	// the cluster launches instances in the EC2-Classic network and uses RequestedEc2AvailabilityZones
5363	// instead of this setting. If EC2-Classic is not supported, and no Subnet is
5364	// specified, Amazon EMR chooses the subnet for you. RequestedEc2SubnetIDs and
5365	// RequestedEc2AvailabilityZones cannot be specified together.
5366	RequestedEc2SubnetIds []*string `type:"list"`
5367
5368	// The identifier of the Amazon EC2 security group for the Amazon EMR service
5369	// to access clusters in VPC private subnets.
5370	ServiceAccessSecurityGroup *string `type:"string"`
5371}
5372
5373// String returns the string representation
5374func (s Ec2InstanceAttributes) String() string {
5375	return awsutil.Prettify(s)
5376}
5377
5378// GoString returns the string representation
5379func (s Ec2InstanceAttributes) GoString() string {
5380	return s.String()
5381}
5382
5383// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
5384func (s *Ec2InstanceAttributes) SetAdditionalMasterSecurityGroups(v []*string) *Ec2InstanceAttributes {
5385	s.AdditionalMasterSecurityGroups = v
5386	return s
5387}
5388
5389// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
5390func (s *Ec2InstanceAttributes) SetAdditionalSlaveSecurityGroups(v []*string) *Ec2InstanceAttributes {
5391	s.AdditionalSlaveSecurityGroups = v
5392	return s
5393}
5394
5395// SetEc2AvailabilityZone sets the Ec2AvailabilityZone field's value.
5396func (s *Ec2InstanceAttributes) SetEc2AvailabilityZone(v string) *Ec2InstanceAttributes {
5397	s.Ec2AvailabilityZone = &v
5398	return s
5399}
5400
5401// SetEc2KeyName sets the Ec2KeyName field's value.
5402func (s *Ec2InstanceAttributes) SetEc2KeyName(v string) *Ec2InstanceAttributes {
5403	s.Ec2KeyName = &v
5404	return s
5405}
5406
5407// SetEc2SubnetId sets the Ec2SubnetId field's value.
5408func (s *Ec2InstanceAttributes) SetEc2SubnetId(v string) *Ec2InstanceAttributes {
5409	s.Ec2SubnetId = &v
5410	return s
5411}
5412
5413// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
5414func (s *Ec2InstanceAttributes) SetEmrManagedMasterSecurityGroup(v string) *Ec2InstanceAttributes {
5415	s.EmrManagedMasterSecurityGroup = &v
5416	return s
5417}
5418
5419// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
5420func (s *Ec2InstanceAttributes) SetEmrManagedSlaveSecurityGroup(v string) *Ec2InstanceAttributes {
5421	s.EmrManagedSlaveSecurityGroup = &v
5422	return s
5423}
5424
5425// SetIamInstanceProfile sets the IamInstanceProfile field's value.
5426func (s *Ec2InstanceAttributes) SetIamInstanceProfile(v string) *Ec2InstanceAttributes {
5427	s.IamInstanceProfile = &v
5428	return s
5429}
5430
5431// SetRequestedEc2AvailabilityZones sets the RequestedEc2AvailabilityZones field's value.
5432func (s *Ec2InstanceAttributes) SetRequestedEc2AvailabilityZones(v []*string) *Ec2InstanceAttributes {
5433	s.RequestedEc2AvailabilityZones = v
5434	return s
5435}
5436
5437// SetRequestedEc2SubnetIds sets the RequestedEc2SubnetIds field's value.
5438func (s *Ec2InstanceAttributes) SetRequestedEc2SubnetIds(v []*string) *Ec2InstanceAttributes {
5439	s.RequestedEc2SubnetIds = v
5440	return s
5441}
5442
5443// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
5444func (s *Ec2InstanceAttributes) SetServiceAccessSecurityGroup(v string) *Ec2InstanceAttributes {
5445	s.ServiceAccessSecurityGroup = &v
5446	return s
5447}
5448
5449// The details of the step failure. The service attempts to detect the root
5450// cause for many common failures.
5451type FailureDetails struct {
5452	_ struct{} `type:"structure"`
5453
5454	// The path to the log file where the step failure root cause was originally
5455	// recorded.
5456	LogFile *string `type:"string"`
5457
5458	// The descriptive message including the error the EMR service has identified
5459	// as the cause of step failure. This is text from an error log that describes
5460	// the root cause of the failure.
5461	Message *string `type:"string"`
5462
5463	// The reason for the step failure. In the case where the service cannot successfully
5464	// determine the root cause of the failure, it returns "Unknown Error" as a
5465	// reason.
5466	Reason *string `type:"string"`
5467}
5468
5469// String returns the string representation
5470func (s FailureDetails) String() string {
5471	return awsutil.Prettify(s)
5472}
5473
5474// GoString returns the string representation
5475func (s FailureDetails) GoString() string {
5476	return s.String()
5477}
5478
5479// SetLogFile sets the LogFile field's value.
5480func (s *FailureDetails) SetLogFile(v string) *FailureDetails {
5481	s.LogFile = &v
5482	return s
5483}
5484
5485// SetMessage sets the Message field's value.
5486func (s *FailureDetails) SetMessage(v string) *FailureDetails {
5487	s.Message = &v
5488	return s
5489}
5490
5491// SetReason sets the Reason field's value.
5492func (s *FailureDetails) SetReason(v string) *FailureDetails {
5493	s.Reason = &v
5494	return s
5495}
5496
5497type GetBlockPublicAccessConfigurationInput struct {
5498	_ struct{} `type:"structure"`
5499}
5500
5501// String returns the string representation
5502func (s GetBlockPublicAccessConfigurationInput) String() string {
5503	return awsutil.Prettify(s)
5504}
5505
5506// GoString returns the string representation
5507func (s GetBlockPublicAccessConfigurationInput) GoString() string {
5508	return s.String()
5509}
5510
5511type GetBlockPublicAccessConfigurationOutput struct {
5512	_ struct{} `type:"structure"`
5513
5514	// A configuration for Amazon EMR block public access. The configuration applies
5515	// to all clusters created in your account for the current Region. The configuration
5516	// specifies whether block public access is enabled. If block public access
5517	// is enabled, security groups associated with the cluster cannot have rules
5518	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
5519	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
5520	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
5521	// and public access is allowed on this port. You can change this by updating
5522	// the block public access configuration to remove the exception.
5523	//
5524	// BlockPublicAccessConfiguration is a required field
5525	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
5526
5527	// Properties that describe the AWS principal that created the BlockPublicAccessConfiguration
5528	// using the PutBlockPublicAccessConfiguration action as well as the date and
5529	// time that the configuration was created. Each time a configuration for block
5530	// public access is updated, Amazon EMR updates this metadata.
5531	//
5532	// BlockPublicAccessConfigurationMetadata is a required field
5533	BlockPublicAccessConfigurationMetadata *BlockPublicAccessConfigurationMetadata `type:"structure" required:"true"`
5534}
5535
5536// String returns the string representation
5537func (s GetBlockPublicAccessConfigurationOutput) String() string {
5538	return awsutil.Prettify(s)
5539}
5540
5541// GoString returns the string representation
5542func (s GetBlockPublicAccessConfigurationOutput) GoString() string {
5543	return s.String()
5544}
5545
5546// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
5547func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *GetBlockPublicAccessConfigurationOutput {
5548	s.BlockPublicAccessConfiguration = v
5549	return s
5550}
5551
5552// SetBlockPublicAccessConfigurationMetadata sets the BlockPublicAccessConfigurationMetadata field's value.
5553func (s *GetBlockPublicAccessConfigurationOutput) SetBlockPublicAccessConfigurationMetadata(v *BlockPublicAccessConfigurationMetadata) *GetBlockPublicAccessConfigurationOutput {
5554	s.BlockPublicAccessConfigurationMetadata = v
5555	return s
5556}
5557
5558// A job flow step consisting of a JAR file whose main function will be executed.
5559// The main function submits a job for Hadoop to execute and waits for the job
5560// to finish or fail.
5561type HadoopJarStepConfig struct {
5562	_ struct{} `type:"structure"`
5563
5564	// A list of command line arguments passed to the JAR file's main function when
5565	// executed.
5566	Args []*string `type:"list"`
5567
5568	// A path to a JAR file run during the step.
5569	//
5570	// Jar is a required field
5571	Jar *string `type:"string" required:"true"`
5572
5573	// The name of the main class in the specified Java file. If not specified,
5574	// the JAR file should specify a Main-Class in its manifest file.
5575	MainClass *string `type:"string"`
5576
5577	// A list of Java properties that are set when the step runs. You can use these
5578	// properties to pass key value pairs to your main function.
5579	Properties []*KeyValue `type:"list"`
5580}
5581
5582// String returns the string representation
5583func (s HadoopJarStepConfig) String() string {
5584	return awsutil.Prettify(s)
5585}
5586
5587// GoString returns the string representation
5588func (s HadoopJarStepConfig) GoString() string {
5589	return s.String()
5590}
5591
5592// Validate inspects the fields of the type to determine if they are valid.
5593func (s *HadoopJarStepConfig) Validate() error {
5594	invalidParams := request.ErrInvalidParams{Context: "HadoopJarStepConfig"}
5595	if s.Jar == nil {
5596		invalidParams.Add(request.NewErrParamRequired("Jar"))
5597	}
5598
5599	if invalidParams.Len() > 0 {
5600		return invalidParams
5601	}
5602	return nil
5603}
5604
5605// SetArgs sets the Args field's value.
5606func (s *HadoopJarStepConfig) SetArgs(v []*string) *HadoopJarStepConfig {
5607	s.Args = v
5608	return s
5609}
5610
5611// SetJar sets the Jar field's value.
5612func (s *HadoopJarStepConfig) SetJar(v string) *HadoopJarStepConfig {
5613	s.Jar = &v
5614	return s
5615}
5616
5617// SetMainClass sets the MainClass field's value.
5618func (s *HadoopJarStepConfig) SetMainClass(v string) *HadoopJarStepConfig {
5619	s.MainClass = &v
5620	return s
5621}
5622
5623// SetProperties sets the Properties field's value.
5624func (s *HadoopJarStepConfig) SetProperties(v []*KeyValue) *HadoopJarStepConfig {
5625	s.Properties = v
5626	return s
5627}
5628
5629// A cluster step consisting of a JAR file whose main function will be executed.
5630// The main function submits a job for Hadoop to execute and waits for the job
5631// to finish or fail.
5632type HadoopStepConfig struct {
5633	_ struct{} `type:"structure"`
5634
5635	// The list of command line arguments to pass to the JAR file's main function
5636	// for execution.
5637	Args []*string `type:"list"`
5638
5639	// The path to the JAR file that runs during the step.
5640	Jar *string `type:"string"`
5641
5642	// The name of the main class in the specified Java file. If not specified,
5643	// the JAR file should specify a main class in its manifest file.
5644	MainClass *string `type:"string"`
5645
5646	// The list of Java properties that are set when the step runs. You can use
5647	// these properties to pass key value pairs to your main function.
5648	Properties map[string]*string `type:"map"`
5649}
5650
5651// String returns the string representation
5652func (s HadoopStepConfig) String() string {
5653	return awsutil.Prettify(s)
5654}
5655
5656// GoString returns the string representation
5657func (s HadoopStepConfig) GoString() string {
5658	return s.String()
5659}
5660
5661// SetArgs sets the Args field's value.
5662func (s *HadoopStepConfig) SetArgs(v []*string) *HadoopStepConfig {
5663	s.Args = v
5664	return s
5665}
5666
5667// SetJar sets the Jar field's value.
5668func (s *HadoopStepConfig) SetJar(v string) *HadoopStepConfig {
5669	s.Jar = &v
5670	return s
5671}
5672
5673// SetMainClass sets the MainClass field's value.
5674func (s *HadoopStepConfig) SetMainClass(v string) *HadoopStepConfig {
5675	s.MainClass = &v
5676	return s
5677}
5678
5679// SetProperties sets the Properties field's value.
5680func (s *HadoopStepConfig) SetProperties(v map[string]*string) *HadoopStepConfig {
5681	s.Properties = v
5682	return s
5683}
5684
5685// Represents an EC2 instance provisioned as part of cluster.
5686type Instance struct {
5687	_ struct{} `type:"structure"`
5688
5689	// The list of EBS volumes that are attached to this instance.
5690	EbsVolumes []*EbsVolume `type:"list"`
5691
5692	// The unique identifier of the instance in Amazon EC2.
5693	Ec2InstanceId *string `type:"string"`
5694
5695	// The unique identifier for the instance in Amazon EMR.
5696	Id *string `type:"string"`
5697
5698	// The unique identifier of the instance fleet to which an EC2 instance belongs.
5699	InstanceFleetId *string `type:"string"`
5700
5701	// The identifier of the instance group to which this instance belongs.
5702	InstanceGroupId *string `type:"string"`
5703
5704	// The EC2 instance type, for example m3.xlarge.
5705	InstanceType *string `min:"1" type:"string"`
5706
5707	// The instance purchasing option. Valid values are ON_DEMAND or SPOT.
5708	Market *string `type:"string" enum:"MarketType"`
5709
5710	// The private DNS name of the instance.
5711	PrivateDnsName *string `type:"string"`
5712
5713	// The private IP address of the instance.
5714	PrivateIpAddress *string `type:"string"`
5715
5716	// The public DNS name of the instance.
5717	PublicDnsName *string `type:"string"`
5718
5719	// The public IP address of the instance.
5720	PublicIpAddress *string `type:"string"`
5721
5722	// The current status of the instance.
5723	Status *InstanceStatus `type:"structure"`
5724}
5725
5726// String returns the string representation
5727func (s Instance) String() string {
5728	return awsutil.Prettify(s)
5729}
5730
5731// GoString returns the string representation
5732func (s Instance) GoString() string {
5733	return s.String()
5734}
5735
5736// SetEbsVolumes sets the EbsVolumes field's value.
5737func (s *Instance) SetEbsVolumes(v []*EbsVolume) *Instance {
5738	s.EbsVolumes = v
5739	return s
5740}
5741
5742// SetEc2InstanceId sets the Ec2InstanceId field's value.
5743func (s *Instance) SetEc2InstanceId(v string) *Instance {
5744	s.Ec2InstanceId = &v
5745	return s
5746}
5747
5748// SetId sets the Id field's value.
5749func (s *Instance) SetId(v string) *Instance {
5750	s.Id = &v
5751	return s
5752}
5753
5754// SetInstanceFleetId sets the InstanceFleetId field's value.
5755func (s *Instance) SetInstanceFleetId(v string) *Instance {
5756	s.InstanceFleetId = &v
5757	return s
5758}
5759
5760// SetInstanceGroupId sets the InstanceGroupId field's value.
5761func (s *Instance) SetInstanceGroupId(v string) *Instance {
5762	s.InstanceGroupId = &v
5763	return s
5764}
5765
5766// SetInstanceType sets the InstanceType field's value.
5767func (s *Instance) SetInstanceType(v string) *Instance {
5768	s.InstanceType = &v
5769	return s
5770}
5771
5772// SetMarket sets the Market field's value.
5773func (s *Instance) SetMarket(v string) *Instance {
5774	s.Market = &v
5775	return s
5776}
5777
5778// SetPrivateDnsName sets the PrivateDnsName field's value.
5779func (s *Instance) SetPrivateDnsName(v string) *Instance {
5780	s.PrivateDnsName = &v
5781	return s
5782}
5783
5784// SetPrivateIpAddress sets the PrivateIpAddress field's value.
5785func (s *Instance) SetPrivateIpAddress(v string) *Instance {
5786	s.PrivateIpAddress = &v
5787	return s
5788}
5789
5790// SetPublicDnsName sets the PublicDnsName field's value.
5791func (s *Instance) SetPublicDnsName(v string) *Instance {
5792	s.PublicDnsName = &v
5793	return s
5794}
5795
5796// SetPublicIpAddress sets the PublicIpAddress field's value.
5797func (s *Instance) SetPublicIpAddress(v string) *Instance {
5798	s.PublicIpAddress = &v
5799	return s
5800}
5801
5802// SetStatus sets the Status field's value.
5803func (s *Instance) SetStatus(v *InstanceStatus) *Instance {
5804	s.Status = v
5805	return s
5806}
5807
5808// Describes an instance fleet, which is a group of EC2 instances that host
5809// a particular node type (master, core, or task) in an Amazon EMR cluster.
5810// Instance fleets can consist of a mix of instance types and On-Demand and
5811// Spot instances, which are provisioned to meet a defined target capacity.
5812//
5813// The instance fleet configuration is available only in Amazon EMR versions
5814// 4.8.0 and later, excluding 5.0.x versions.
5815type InstanceFleet struct {
5816	_ struct{} `type:"structure"`
5817
5818	// The unique identifier of the instance fleet.
5819	Id *string `type:"string"`
5820
5821	// The node type that the instance fleet hosts. Valid values are MASTER, CORE,
5822	// or TASK.
5823	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
5824
5825	// The specification for the instance types that comprise an instance fleet.
5826	// Up to five unique instance specifications may be defined for each instance
5827	// fleet.
5828	InstanceTypeSpecifications []*InstanceTypeSpecification `type:"list"`
5829
5830	// Describes the launch specification for an instance fleet.
5831	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
5832
5833	// A friendly name for the instance fleet.
5834	Name *string `type:"string"`
5835
5836	// The number of On-Demand units that have been provisioned for the instance
5837	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might
5838	// be less than or greater than TargetOnDemandCapacity.
5839	ProvisionedOnDemandCapacity *int64 `type:"integer"`
5840
5841	// The number of Spot units that have been provisioned for this instance fleet
5842	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than
5843	// or greater than TargetSpotCapacity.
5844	ProvisionedSpotCapacity *int64 `type:"integer"`
5845
5846	// The current status of the instance fleet.
5847	Status *InstanceFleetStatus `type:"structure"`
5848
5849	// The target capacity of On-Demand units for the instance fleet, which determines
5850	// how many On-Demand instances to provision. When the instance fleet launches,
5851	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
5852	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
5853	// instance is provisioned, the WeightedCapacity units count toward the target
5854	// capacity. Amazon EMR provisions instances until the target capacity is totally
5855	// fulfilled, even if this results in an overage. For example, if there are
5856	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5857	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5858	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedOnDemandCapacity
5859	// to determine the Spot capacity units that have been provisioned for the instance
5860	// fleet.
5861	//
5862	// If not specified or set to 0, only Spot instances are provisioned for the
5863	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
5864	// and TargetOnDemandCapacity should be greater than 0. For a master instance
5865	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
5866	// and its value must be 1.
5867	TargetOnDemandCapacity *int64 `type:"integer"`
5868
5869	// The target capacity of Spot units for the instance fleet, which determines
5870	// how many Spot instances to provision. When the instance fleet launches, Amazon
5871	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
5872	// Each instance configuration has a specified WeightedCapacity. When a Spot
5873	// instance is provisioned, the WeightedCapacity units count toward the target
5874	// capacity. Amazon EMR provisions instances until the target capacity is totally
5875	// fulfilled, even if this results in an overage. For example, if there are
5876	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5877	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5878	// and the target capacity is exceeded by 3 units. You can use InstanceFleet$ProvisionedSpotCapacity
5879	// to determine the Spot capacity units that have been provisioned for the instance
5880	// fleet.
5881	//
5882	// If not specified or set to 0, only On-Demand instances are provisioned for
5883	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
5884	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
5885	// and TargetOnDemandCapacity can be specified, and its value must be 1.
5886	TargetSpotCapacity *int64 `type:"integer"`
5887}
5888
5889// String returns the string representation
5890func (s InstanceFleet) String() string {
5891	return awsutil.Prettify(s)
5892}
5893
5894// GoString returns the string representation
5895func (s InstanceFleet) GoString() string {
5896	return s.String()
5897}
5898
5899// SetId sets the Id field's value.
5900func (s *InstanceFleet) SetId(v string) *InstanceFleet {
5901	s.Id = &v
5902	return s
5903}
5904
5905// SetInstanceFleetType sets the InstanceFleetType field's value.
5906func (s *InstanceFleet) SetInstanceFleetType(v string) *InstanceFleet {
5907	s.InstanceFleetType = &v
5908	return s
5909}
5910
5911// SetInstanceTypeSpecifications sets the InstanceTypeSpecifications field's value.
5912func (s *InstanceFleet) SetInstanceTypeSpecifications(v []*InstanceTypeSpecification) *InstanceFleet {
5913	s.InstanceTypeSpecifications = v
5914	return s
5915}
5916
5917// SetLaunchSpecifications sets the LaunchSpecifications field's value.
5918func (s *InstanceFleet) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleet {
5919	s.LaunchSpecifications = v
5920	return s
5921}
5922
5923// SetName sets the Name field's value.
5924func (s *InstanceFleet) SetName(v string) *InstanceFleet {
5925	s.Name = &v
5926	return s
5927}
5928
5929// SetProvisionedOnDemandCapacity sets the ProvisionedOnDemandCapacity field's value.
5930func (s *InstanceFleet) SetProvisionedOnDemandCapacity(v int64) *InstanceFleet {
5931	s.ProvisionedOnDemandCapacity = &v
5932	return s
5933}
5934
5935// SetProvisionedSpotCapacity sets the ProvisionedSpotCapacity field's value.
5936func (s *InstanceFleet) SetProvisionedSpotCapacity(v int64) *InstanceFleet {
5937	s.ProvisionedSpotCapacity = &v
5938	return s
5939}
5940
5941// SetStatus sets the Status field's value.
5942func (s *InstanceFleet) SetStatus(v *InstanceFleetStatus) *InstanceFleet {
5943	s.Status = v
5944	return s
5945}
5946
5947// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
5948func (s *InstanceFleet) SetTargetOnDemandCapacity(v int64) *InstanceFleet {
5949	s.TargetOnDemandCapacity = &v
5950	return s
5951}
5952
5953// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
5954func (s *InstanceFleet) SetTargetSpotCapacity(v int64) *InstanceFleet {
5955	s.TargetSpotCapacity = &v
5956	return s
5957}
5958
5959// The configuration that defines an instance fleet.
5960//
5961// The instance fleet configuration is available only in Amazon EMR versions
5962// 4.8.0 and later, excluding 5.0.x versions.
5963type InstanceFleetConfig struct {
5964	_ struct{} `type:"structure"`
5965
5966	// The node type that the instance fleet hosts. Valid values are MASTER,CORE,and
5967	// TASK.
5968	//
5969	// InstanceFleetType is a required field
5970	InstanceFleetType *string `type:"string" required:"true" enum:"InstanceFleetType"`
5971
5972	// The instance type configurations that define the EC2 instances in the instance
5973	// fleet.
5974	InstanceTypeConfigs []*InstanceTypeConfig `type:"list"`
5975
5976	// The launch specification for the instance fleet.
5977	LaunchSpecifications *InstanceFleetProvisioningSpecifications `type:"structure"`
5978
5979	// The friendly name of the instance fleet.
5980	Name *string `type:"string"`
5981
5982	// The target capacity of On-Demand units for the instance fleet, which determines
5983	// how many On-Demand instances to provision. When the instance fleet launches,
5984	// Amazon EMR tries to provision On-Demand instances as specified by InstanceTypeConfig.
5985	// Each instance configuration has a specified WeightedCapacity. When an On-Demand
5986	// instance is provisioned, the WeightedCapacity units count toward the target
5987	// capacity. Amazon EMR provisions instances until the target capacity is totally
5988	// fulfilled, even if this results in an overage. For example, if there are
5989	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
5990	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
5991	// and the target capacity is exceeded by 3 units.
5992	//
5993	// If not specified or set to 0, only Spot instances are provisioned for the
5994	// instance fleet using TargetSpotCapacity. At least one of TargetSpotCapacity
5995	// and TargetOnDemandCapacity should be greater than 0. For a master instance
5996	// fleet, only one of TargetSpotCapacity and TargetOnDemandCapacity can be specified,
5997	// and its value must be 1.
5998	TargetOnDemandCapacity *int64 `type:"integer"`
5999
6000	// The target capacity of Spot units for the instance fleet, which determines
6001	// how many Spot instances to provision. When the instance fleet launches, Amazon
6002	// EMR tries to provision Spot instances as specified by InstanceTypeConfig.
6003	// Each instance configuration has a specified WeightedCapacity. When a Spot
6004	// instance is provisioned, the WeightedCapacity units count toward the target
6005	// capacity. Amazon EMR provisions instances until the target capacity is totally
6006	// fulfilled, even if this results in an overage. For example, if there are
6007	// 2 units remaining to fulfill capacity, and Amazon EMR can only provision
6008	// an instance with a WeightedCapacity of 5 units, the instance is provisioned,
6009	// and the target capacity is exceeded by 3 units.
6010	//
6011	// If not specified or set to 0, only On-Demand instances are provisioned for
6012	// the instance fleet. At least one of TargetSpotCapacity and TargetOnDemandCapacity
6013	// should be greater than 0. For a master instance fleet, only one of TargetSpotCapacity
6014	// and TargetOnDemandCapacity can be specified, and its value must be 1.
6015	TargetSpotCapacity *int64 `type:"integer"`
6016}
6017
6018// String returns the string representation
6019func (s InstanceFleetConfig) String() string {
6020	return awsutil.Prettify(s)
6021}
6022
6023// GoString returns the string representation
6024func (s InstanceFleetConfig) GoString() string {
6025	return s.String()
6026}
6027
6028// Validate inspects the fields of the type to determine if they are valid.
6029func (s *InstanceFleetConfig) Validate() error {
6030	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetConfig"}
6031	if s.InstanceFleetType == nil {
6032		invalidParams.Add(request.NewErrParamRequired("InstanceFleetType"))
6033	}
6034	if s.InstanceTypeConfigs != nil {
6035		for i, v := range s.InstanceTypeConfigs {
6036			if v == nil {
6037				continue
6038			}
6039			if err := v.Validate(); err != nil {
6040				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceTypeConfigs", i), err.(request.ErrInvalidParams))
6041			}
6042		}
6043	}
6044	if s.LaunchSpecifications != nil {
6045		if err := s.LaunchSpecifications.Validate(); err != nil {
6046			invalidParams.AddNested("LaunchSpecifications", err.(request.ErrInvalidParams))
6047		}
6048	}
6049
6050	if invalidParams.Len() > 0 {
6051		return invalidParams
6052	}
6053	return nil
6054}
6055
6056// SetInstanceFleetType sets the InstanceFleetType field's value.
6057func (s *InstanceFleetConfig) SetInstanceFleetType(v string) *InstanceFleetConfig {
6058	s.InstanceFleetType = &v
6059	return s
6060}
6061
6062// SetInstanceTypeConfigs sets the InstanceTypeConfigs field's value.
6063func (s *InstanceFleetConfig) SetInstanceTypeConfigs(v []*InstanceTypeConfig) *InstanceFleetConfig {
6064	s.InstanceTypeConfigs = v
6065	return s
6066}
6067
6068// SetLaunchSpecifications sets the LaunchSpecifications field's value.
6069func (s *InstanceFleetConfig) SetLaunchSpecifications(v *InstanceFleetProvisioningSpecifications) *InstanceFleetConfig {
6070	s.LaunchSpecifications = v
6071	return s
6072}
6073
6074// SetName sets the Name field's value.
6075func (s *InstanceFleetConfig) SetName(v string) *InstanceFleetConfig {
6076	s.Name = &v
6077	return s
6078}
6079
6080// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
6081func (s *InstanceFleetConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetConfig {
6082	s.TargetOnDemandCapacity = &v
6083	return s
6084}
6085
6086// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
6087func (s *InstanceFleetConfig) SetTargetSpotCapacity(v int64) *InstanceFleetConfig {
6088	s.TargetSpotCapacity = &v
6089	return s
6090}
6091
6092// Configuration parameters for an instance fleet modification request.
6093//
6094// The instance fleet configuration is available only in Amazon EMR versions
6095// 4.8.0 and later, excluding 5.0.x versions.
6096type InstanceFleetModifyConfig struct {
6097	_ struct{} `type:"structure"`
6098
6099	// A unique identifier for the instance fleet.
6100	//
6101	// InstanceFleetId is a required field
6102	InstanceFleetId *string `type:"string" required:"true"`
6103
6104	// The target capacity of On-Demand units for the instance fleet. For more information
6105	// see InstanceFleetConfig$TargetOnDemandCapacity.
6106	TargetOnDemandCapacity *int64 `type:"integer"`
6107
6108	// The target capacity of Spot units for the instance fleet. For more information,
6109	// see InstanceFleetConfig$TargetSpotCapacity.
6110	TargetSpotCapacity *int64 `type:"integer"`
6111}
6112
6113// String returns the string representation
6114func (s InstanceFleetModifyConfig) String() string {
6115	return awsutil.Prettify(s)
6116}
6117
6118// GoString returns the string representation
6119func (s InstanceFleetModifyConfig) GoString() string {
6120	return s.String()
6121}
6122
6123// Validate inspects the fields of the type to determine if they are valid.
6124func (s *InstanceFleetModifyConfig) Validate() error {
6125	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetModifyConfig"}
6126	if s.InstanceFleetId == nil {
6127		invalidParams.Add(request.NewErrParamRequired("InstanceFleetId"))
6128	}
6129
6130	if invalidParams.Len() > 0 {
6131		return invalidParams
6132	}
6133	return nil
6134}
6135
6136// SetInstanceFleetId sets the InstanceFleetId field's value.
6137func (s *InstanceFleetModifyConfig) SetInstanceFleetId(v string) *InstanceFleetModifyConfig {
6138	s.InstanceFleetId = &v
6139	return s
6140}
6141
6142// SetTargetOnDemandCapacity sets the TargetOnDemandCapacity field's value.
6143func (s *InstanceFleetModifyConfig) SetTargetOnDemandCapacity(v int64) *InstanceFleetModifyConfig {
6144	s.TargetOnDemandCapacity = &v
6145	return s
6146}
6147
6148// SetTargetSpotCapacity sets the TargetSpotCapacity field's value.
6149func (s *InstanceFleetModifyConfig) SetTargetSpotCapacity(v int64) *InstanceFleetModifyConfig {
6150	s.TargetSpotCapacity = &v
6151	return s
6152}
6153
6154// The launch specification for Spot instances in the fleet, which determines
6155// the defined duration and provisioning timeout behavior.
6156//
6157// The instance fleet configuration is available only in Amazon EMR versions
6158// 4.8.0 and later, excluding 5.0.x versions.
6159type InstanceFleetProvisioningSpecifications struct {
6160	_ struct{} `type:"structure"`
6161
6162	// The launch specification for Spot instances in the fleet, which determines
6163	// the defined duration and provisioning timeout behavior.
6164	//
6165	// SpotSpecification is a required field
6166	SpotSpecification *SpotProvisioningSpecification `type:"structure" required:"true"`
6167}
6168
6169// String returns the string representation
6170func (s InstanceFleetProvisioningSpecifications) String() string {
6171	return awsutil.Prettify(s)
6172}
6173
6174// GoString returns the string representation
6175func (s InstanceFleetProvisioningSpecifications) GoString() string {
6176	return s.String()
6177}
6178
6179// Validate inspects the fields of the type to determine if they are valid.
6180func (s *InstanceFleetProvisioningSpecifications) Validate() error {
6181	invalidParams := request.ErrInvalidParams{Context: "InstanceFleetProvisioningSpecifications"}
6182	if s.SpotSpecification == nil {
6183		invalidParams.Add(request.NewErrParamRequired("SpotSpecification"))
6184	}
6185	if s.SpotSpecification != nil {
6186		if err := s.SpotSpecification.Validate(); err != nil {
6187			invalidParams.AddNested("SpotSpecification", err.(request.ErrInvalidParams))
6188		}
6189	}
6190
6191	if invalidParams.Len() > 0 {
6192		return invalidParams
6193	}
6194	return nil
6195}
6196
6197// SetSpotSpecification sets the SpotSpecification field's value.
6198func (s *InstanceFleetProvisioningSpecifications) SetSpotSpecification(v *SpotProvisioningSpecification) *InstanceFleetProvisioningSpecifications {
6199	s.SpotSpecification = v
6200	return s
6201}
6202
6203// Provides status change reason details for the instance fleet.
6204//
6205// The instance fleet configuration is available only in Amazon EMR versions
6206// 4.8.0 and later, excluding 5.0.x versions.
6207type InstanceFleetStateChangeReason struct {
6208	_ struct{} `type:"structure"`
6209
6210	// A code corresponding to the reason the state change occurred.
6211	Code *string `type:"string" enum:"InstanceFleetStateChangeReasonCode"`
6212
6213	// An explanatory message.
6214	Message *string `type:"string"`
6215}
6216
6217// String returns the string representation
6218func (s InstanceFleetStateChangeReason) String() string {
6219	return awsutil.Prettify(s)
6220}
6221
6222// GoString returns the string representation
6223func (s InstanceFleetStateChangeReason) GoString() string {
6224	return s.String()
6225}
6226
6227// SetCode sets the Code field's value.
6228func (s *InstanceFleetStateChangeReason) SetCode(v string) *InstanceFleetStateChangeReason {
6229	s.Code = &v
6230	return s
6231}
6232
6233// SetMessage sets the Message field's value.
6234func (s *InstanceFleetStateChangeReason) SetMessage(v string) *InstanceFleetStateChangeReason {
6235	s.Message = &v
6236	return s
6237}
6238
6239// The status of the instance fleet.
6240//
6241// The instance fleet configuration is available only in Amazon EMR versions
6242// 4.8.0 and later, excluding 5.0.x versions.
6243type InstanceFleetStatus struct {
6244	_ struct{} `type:"structure"`
6245
6246	// A code representing the instance fleet status.
6247	//
6248	//    * PROVISIONING—The instance fleet is provisioning EC2 resources and
6249	//    is not yet ready to run jobs.
6250	//
6251	//    * BOOTSTRAPPING—EC2 instances and other resources have been provisioned
6252	//    and the bootstrap actions specified for the instances are underway.
6253	//
6254	//    * RUNNING—EC2 instances and other resources are running. They are either
6255	//    executing jobs or waiting to execute jobs.
6256	//
6257	//    * RESIZING—A resize operation is underway. EC2 instances are either
6258	//    being added or removed.
6259	//
6260	//    * SUSPENDED—A resize operation could not complete. Existing EC2 instances
6261	//    are running, but instances can't be added or removed.
6262	//
6263	//    * TERMINATING—The instance fleet is terminating EC2 instances.
6264	//
6265	//    * TERMINATED—The instance fleet is no longer active, and all EC2 instances
6266	//    have been terminated.
6267	State *string `type:"string" enum:"InstanceFleetState"`
6268
6269	// Provides status change reason details for the instance fleet.
6270	StateChangeReason *InstanceFleetStateChangeReason `type:"structure"`
6271
6272	// Provides historical timestamps for the instance fleet, including the time
6273	// of creation, the time it became ready to run jobs, and the time of termination.
6274	Timeline *InstanceFleetTimeline `type:"structure"`
6275}
6276
6277// String returns the string representation
6278func (s InstanceFleetStatus) String() string {
6279	return awsutil.Prettify(s)
6280}
6281
6282// GoString returns the string representation
6283func (s InstanceFleetStatus) GoString() string {
6284	return s.String()
6285}
6286
6287// SetState sets the State field's value.
6288func (s *InstanceFleetStatus) SetState(v string) *InstanceFleetStatus {
6289	s.State = &v
6290	return s
6291}
6292
6293// SetStateChangeReason sets the StateChangeReason field's value.
6294func (s *InstanceFleetStatus) SetStateChangeReason(v *InstanceFleetStateChangeReason) *InstanceFleetStatus {
6295	s.StateChangeReason = v
6296	return s
6297}
6298
6299// SetTimeline sets the Timeline field's value.
6300func (s *InstanceFleetStatus) SetTimeline(v *InstanceFleetTimeline) *InstanceFleetStatus {
6301	s.Timeline = v
6302	return s
6303}
6304
6305// Provides historical timestamps for the instance fleet, including the time
6306// of creation, the time it became ready to run jobs, and the time of termination.
6307//
6308// The instance fleet configuration is available only in Amazon EMR versions
6309// 4.8.0 and later, excluding 5.0.x versions.
6310type InstanceFleetTimeline struct {
6311	_ struct{} `type:"structure"`
6312
6313	// The time and date the instance fleet was created.
6314	CreationDateTime *time.Time `type:"timestamp"`
6315
6316	// The time and date the instance fleet terminated.
6317	EndDateTime *time.Time `type:"timestamp"`
6318
6319	// The time and date the instance fleet was ready to run jobs.
6320	ReadyDateTime *time.Time `type:"timestamp"`
6321}
6322
6323// String returns the string representation
6324func (s InstanceFleetTimeline) String() string {
6325	return awsutil.Prettify(s)
6326}
6327
6328// GoString returns the string representation
6329func (s InstanceFleetTimeline) GoString() string {
6330	return s.String()
6331}
6332
6333// SetCreationDateTime sets the CreationDateTime field's value.
6334func (s *InstanceFleetTimeline) SetCreationDateTime(v time.Time) *InstanceFleetTimeline {
6335	s.CreationDateTime = &v
6336	return s
6337}
6338
6339// SetEndDateTime sets the EndDateTime field's value.
6340func (s *InstanceFleetTimeline) SetEndDateTime(v time.Time) *InstanceFleetTimeline {
6341	s.EndDateTime = &v
6342	return s
6343}
6344
6345// SetReadyDateTime sets the ReadyDateTime field's value.
6346func (s *InstanceFleetTimeline) SetReadyDateTime(v time.Time) *InstanceFleetTimeline {
6347	s.ReadyDateTime = &v
6348	return s
6349}
6350
6351// This entity represents an instance group, which is a group of instances that
6352// have common purpose. For example, CORE instance group is used for HDFS.
6353type InstanceGroup struct {
6354	_ struct{} `type:"structure"`
6355
6356	// An automatic scaling policy for a core instance group or task instance group
6357	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6358	// group dynamically adds and terminates EC2 instances in response to the value
6359	// of a CloudWatch metric. See PutAutoScalingPolicy.
6360	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
6361
6362	// The bid price for each EC2 Spot instance type as defined by InstanceType.
6363	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
6364	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
6365	BidPrice *string `type:"string"`
6366
6367	//
6368	// Amazon EMR releases 4.x or later.
6369	//
6370	// The list of configurations supplied for an EMR cluster instance group. You
6371	// can specify a separate configuration for each instance group (master, core,
6372	// and task).
6373	Configurations []*Configuration `type:"list"`
6374
6375	// The version number of the requested configuration specification for this
6376	// instance group.
6377	ConfigurationsVersion *int64 `type:"long"`
6378
6379	// The EBS block devices that are mapped to this instance group.
6380	EbsBlockDevices []*EbsBlockDevice `type:"list"`
6381
6382	// If the instance group is EBS-optimized. An Amazon EBS-optimized instance
6383	// uses an optimized configuration stack and provides additional, dedicated
6384	// capacity for Amazon EBS I/O.
6385	EbsOptimized *bool `type:"boolean"`
6386
6387	// The identifier of the instance group.
6388	Id *string `type:"string"`
6389
6390	// The type of the instance group. Valid values are MASTER, CORE or TASK.
6391	InstanceGroupType *string `type:"string" enum:"InstanceGroupType"`
6392
6393	// The EC2 instance type for all instances in the instance group.
6394	InstanceType *string `min:"1" type:"string"`
6395
6396	// A list of configurations that were successfully applied for an instance group
6397	// last time.
6398	LastSuccessfullyAppliedConfigurations []*Configuration `type:"list"`
6399
6400	// The version number of a configuration specification that was successfully
6401	// applied for an instance group last time.
6402	LastSuccessfullyAppliedConfigurationsVersion *int64 `type:"long"`
6403
6404	// The marketplace to provision instances for this group. Valid values are ON_DEMAND
6405	// or SPOT.
6406	Market *string `type:"string" enum:"MarketType"`
6407
6408	// The name of the instance group.
6409	Name *string `type:"string"`
6410
6411	// The target number of instances for the instance group.
6412	RequestedInstanceCount *int64 `type:"integer"`
6413
6414	// The number of instances currently running in this instance group.
6415	RunningInstanceCount *int64 `type:"integer"`
6416
6417	// Policy for customizing shrink operations.
6418	ShrinkPolicy *ShrinkPolicy `type:"structure"`
6419
6420	// The current status of the instance group.
6421	Status *InstanceGroupStatus `type:"structure"`
6422}
6423
6424// String returns the string representation
6425func (s InstanceGroup) String() string {
6426	return awsutil.Prettify(s)
6427}
6428
6429// GoString returns the string representation
6430func (s InstanceGroup) GoString() string {
6431	return s.String()
6432}
6433
6434// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
6435func (s *InstanceGroup) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *InstanceGroup {
6436	s.AutoScalingPolicy = v
6437	return s
6438}
6439
6440// SetBidPrice sets the BidPrice field's value.
6441func (s *InstanceGroup) SetBidPrice(v string) *InstanceGroup {
6442	s.BidPrice = &v
6443	return s
6444}
6445
6446// SetConfigurations sets the Configurations field's value.
6447func (s *InstanceGroup) SetConfigurations(v []*Configuration) *InstanceGroup {
6448	s.Configurations = v
6449	return s
6450}
6451
6452// SetConfigurationsVersion sets the ConfigurationsVersion field's value.
6453func (s *InstanceGroup) SetConfigurationsVersion(v int64) *InstanceGroup {
6454	s.ConfigurationsVersion = &v
6455	return s
6456}
6457
6458// SetEbsBlockDevices sets the EbsBlockDevices field's value.
6459func (s *InstanceGroup) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceGroup {
6460	s.EbsBlockDevices = v
6461	return s
6462}
6463
6464// SetEbsOptimized sets the EbsOptimized field's value.
6465func (s *InstanceGroup) SetEbsOptimized(v bool) *InstanceGroup {
6466	s.EbsOptimized = &v
6467	return s
6468}
6469
6470// SetId sets the Id field's value.
6471func (s *InstanceGroup) SetId(v string) *InstanceGroup {
6472	s.Id = &v
6473	return s
6474}
6475
6476// SetInstanceGroupType sets the InstanceGroupType field's value.
6477func (s *InstanceGroup) SetInstanceGroupType(v string) *InstanceGroup {
6478	s.InstanceGroupType = &v
6479	return s
6480}
6481
6482// SetInstanceType sets the InstanceType field's value.
6483func (s *InstanceGroup) SetInstanceType(v string) *InstanceGroup {
6484	s.InstanceType = &v
6485	return s
6486}
6487
6488// SetLastSuccessfullyAppliedConfigurations sets the LastSuccessfullyAppliedConfigurations field's value.
6489func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurations(v []*Configuration) *InstanceGroup {
6490	s.LastSuccessfullyAppliedConfigurations = v
6491	return s
6492}
6493
6494// SetLastSuccessfullyAppliedConfigurationsVersion sets the LastSuccessfullyAppliedConfigurationsVersion field's value.
6495func (s *InstanceGroup) SetLastSuccessfullyAppliedConfigurationsVersion(v int64) *InstanceGroup {
6496	s.LastSuccessfullyAppliedConfigurationsVersion = &v
6497	return s
6498}
6499
6500// SetMarket sets the Market field's value.
6501func (s *InstanceGroup) SetMarket(v string) *InstanceGroup {
6502	s.Market = &v
6503	return s
6504}
6505
6506// SetName sets the Name field's value.
6507func (s *InstanceGroup) SetName(v string) *InstanceGroup {
6508	s.Name = &v
6509	return s
6510}
6511
6512// SetRequestedInstanceCount sets the RequestedInstanceCount field's value.
6513func (s *InstanceGroup) SetRequestedInstanceCount(v int64) *InstanceGroup {
6514	s.RequestedInstanceCount = &v
6515	return s
6516}
6517
6518// SetRunningInstanceCount sets the RunningInstanceCount field's value.
6519func (s *InstanceGroup) SetRunningInstanceCount(v int64) *InstanceGroup {
6520	s.RunningInstanceCount = &v
6521	return s
6522}
6523
6524// SetShrinkPolicy sets the ShrinkPolicy field's value.
6525func (s *InstanceGroup) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroup {
6526	s.ShrinkPolicy = v
6527	return s
6528}
6529
6530// SetStatus sets the Status field's value.
6531func (s *InstanceGroup) SetStatus(v *InstanceGroupStatus) *InstanceGroup {
6532	s.Status = v
6533	return s
6534}
6535
6536// Configuration defining a new instance group.
6537type InstanceGroupConfig struct {
6538	_ struct{} `type:"structure"`
6539
6540	// An automatic scaling policy for a core instance group or task instance group
6541	// in an Amazon EMR cluster. The automatic scaling policy defines how an instance
6542	// group dynamically adds and terminates EC2 instances in response to the value
6543	// of a CloudWatch metric. See PutAutoScalingPolicy.
6544	AutoScalingPolicy *AutoScalingPolicy `type:"structure"`
6545
6546	// The bid price for each EC2 Spot instance type as defined by InstanceType.
6547	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
6548	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
6549	BidPrice *string `type:"string"`
6550
6551	//
6552	// Amazon EMR releases 4.x or later.
6553	//
6554	// The list of configurations supplied for an EMR cluster instance group. You
6555	// can specify a separate configuration for each instance group (master, core,
6556	// and task).
6557	Configurations []*Configuration `type:"list"`
6558
6559	// EBS configurations that will be attached to each EC2 instance in the instance
6560	// group.
6561	EbsConfiguration *EbsConfiguration `type:"structure"`
6562
6563	// Target number of instances for the instance group.
6564	//
6565	// InstanceCount is a required field
6566	InstanceCount *int64 `type:"integer" required:"true"`
6567
6568	// The role of the instance group in the cluster.
6569	//
6570	// InstanceRole is a required field
6571	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
6572
6573	// The EC2 instance type for all instances in the instance group.
6574	//
6575	// InstanceType is a required field
6576	InstanceType *string `min:"1" type:"string" required:"true"`
6577
6578	// Market type of the EC2 instances used to create a cluster node.
6579	Market *string `type:"string" enum:"MarketType"`
6580
6581	// Friendly name given to the instance group.
6582	Name *string `type:"string"`
6583}
6584
6585// String returns the string representation
6586func (s InstanceGroupConfig) String() string {
6587	return awsutil.Prettify(s)
6588}
6589
6590// GoString returns the string representation
6591func (s InstanceGroupConfig) GoString() string {
6592	return s.String()
6593}
6594
6595// Validate inspects the fields of the type to determine if they are valid.
6596func (s *InstanceGroupConfig) Validate() error {
6597	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupConfig"}
6598	if s.InstanceCount == nil {
6599		invalidParams.Add(request.NewErrParamRequired("InstanceCount"))
6600	}
6601	if s.InstanceRole == nil {
6602		invalidParams.Add(request.NewErrParamRequired("InstanceRole"))
6603	}
6604	if s.InstanceType == nil {
6605		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
6606	}
6607	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
6608		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
6609	}
6610	if s.AutoScalingPolicy != nil {
6611		if err := s.AutoScalingPolicy.Validate(); err != nil {
6612			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
6613		}
6614	}
6615	if s.EbsConfiguration != nil {
6616		if err := s.EbsConfiguration.Validate(); err != nil {
6617			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
6618		}
6619	}
6620
6621	if invalidParams.Len() > 0 {
6622		return invalidParams
6623	}
6624	return nil
6625}
6626
6627// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
6628func (s *InstanceGroupConfig) SetAutoScalingPolicy(v *AutoScalingPolicy) *InstanceGroupConfig {
6629	s.AutoScalingPolicy = v
6630	return s
6631}
6632
6633// SetBidPrice sets the BidPrice field's value.
6634func (s *InstanceGroupConfig) SetBidPrice(v string) *InstanceGroupConfig {
6635	s.BidPrice = &v
6636	return s
6637}
6638
6639// SetConfigurations sets the Configurations field's value.
6640func (s *InstanceGroupConfig) SetConfigurations(v []*Configuration) *InstanceGroupConfig {
6641	s.Configurations = v
6642	return s
6643}
6644
6645// SetEbsConfiguration sets the EbsConfiguration field's value.
6646func (s *InstanceGroupConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceGroupConfig {
6647	s.EbsConfiguration = v
6648	return s
6649}
6650
6651// SetInstanceCount sets the InstanceCount field's value.
6652func (s *InstanceGroupConfig) SetInstanceCount(v int64) *InstanceGroupConfig {
6653	s.InstanceCount = &v
6654	return s
6655}
6656
6657// SetInstanceRole sets the InstanceRole field's value.
6658func (s *InstanceGroupConfig) SetInstanceRole(v string) *InstanceGroupConfig {
6659	s.InstanceRole = &v
6660	return s
6661}
6662
6663// SetInstanceType sets the InstanceType field's value.
6664func (s *InstanceGroupConfig) SetInstanceType(v string) *InstanceGroupConfig {
6665	s.InstanceType = &v
6666	return s
6667}
6668
6669// SetMarket sets the Market field's value.
6670func (s *InstanceGroupConfig) SetMarket(v string) *InstanceGroupConfig {
6671	s.Market = &v
6672	return s
6673}
6674
6675// SetName sets the Name field's value.
6676func (s *InstanceGroupConfig) SetName(v string) *InstanceGroupConfig {
6677	s.Name = &v
6678	return s
6679}
6680
6681// Detailed information about an instance group.
6682type InstanceGroupDetail struct {
6683	_ struct{} `type:"structure"`
6684
6685	// The bid price for each EC2 Spot instance type as defined by InstanceType.
6686	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
6687	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
6688	BidPrice *string `type:"string"`
6689
6690	// The date/time the instance group was created.
6691	//
6692	// CreationDateTime is a required field
6693	CreationDateTime *time.Time `type:"timestamp" required:"true"`
6694
6695	// The date/time the instance group was terminated.
6696	EndDateTime *time.Time `type:"timestamp"`
6697
6698	// Unique identifier for the instance group.
6699	InstanceGroupId *string `type:"string"`
6700
6701	// Target number of instances to run in the instance group.
6702	//
6703	// InstanceRequestCount is a required field
6704	InstanceRequestCount *int64 `type:"integer" required:"true"`
6705
6706	// Instance group role in the cluster
6707	//
6708	// InstanceRole is a required field
6709	InstanceRole *string `type:"string" required:"true" enum:"InstanceRoleType"`
6710
6711	// Actual count of running instances.
6712	//
6713	// InstanceRunningCount is a required field
6714	InstanceRunningCount *int64 `type:"integer" required:"true"`
6715
6716	// EC2 instance type.
6717	//
6718	// InstanceType is a required field
6719	InstanceType *string `min:"1" type:"string" required:"true"`
6720
6721	// Details regarding the state of the instance group.
6722	LastStateChangeReason *string `type:"string"`
6723
6724	// Market type of the EC2 instances used to create a cluster node.
6725	//
6726	// Market is a required field
6727	Market *string `type:"string" required:"true" enum:"MarketType"`
6728
6729	// Friendly name for the instance group.
6730	Name *string `type:"string"`
6731
6732	// The date/time the instance group was available to the cluster.
6733	ReadyDateTime *time.Time `type:"timestamp"`
6734
6735	// The date/time the instance group was started.
6736	StartDateTime *time.Time `type:"timestamp"`
6737
6738	// State of instance group. The following values are deprecated: STARTING, TERMINATED,
6739	// and FAILED.
6740	//
6741	// State is a required field
6742	State *string `type:"string" required:"true" enum:"InstanceGroupState"`
6743}
6744
6745// String returns the string representation
6746func (s InstanceGroupDetail) String() string {
6747	return awsutil.Prettify(s)
6748}
6749
6750// GoString returns the string representation
6751func (s InstanceGroupDetail) GoString() string {
6752	return s.String()
6753}
6754
6755// SetBidPrice sets the BidPrice field's value.
6756func (s *InstanceGroupDetail) SetBidPrice(v string) *InstanceGroupDetail {
6757	s.BidPrice = &v
6758	return s
6759}
6760
6761// SetCreationDateTime sets the CreationDateTime field's value.
6762func (s *InstanceGroupDetail) SetCreationDateTime(v time.Time) *InstanceGroupDetail {
6763	s.CreationDateTime = &v
6764	return s
6765}
6766
6767// SetEndDateTime sets the EndDateTime field's value.
6768func (s *InstanceGroupDetail) SetEndDateTime(v time.Time) *InstanceGroupDetail {
6769	s.EndDateTime = &v
6770	return s
6771}
6772
6773// SetInstanceGroupId sets the InstanceGroupId field's value.
6774func (s *InstanceGroupDetail) SetInstanceGroupId(v string) *InstanceGroupDetail {
6775	s.InstanceGroupId = &v
6776	return s
6777}
6778
6779// SetInstanceRequestCount sets the InstanceRequestCount field's value.
6780func (s *InstanceGroupDetail) SetInstanceRequestCount(v int64) *InstanceGroupDetail {
6781	s.InstanceRequestCount = &v
6782	return s
6783}
6784
6785// SetInstanceRole sets the InstanceRole field's value.
6786func (s *InstanceGroupDetail) SetInstanceRole(v string) *InstanceGroupDetail {
6787	s.InstanceRole = &v
6788	return s
6789}
6790
6791// SetInstanceRunningCount sets the InstanceRunningCount field's value.
6792func (s *InstanceGroupDetail) SetInstanceRunningCount(v int64) *InstanceGroupDetail {
6793	s.InstanceRunningCount = &v
6794	return s
6795}
6796
6797// SetInstanceType sets the InstanceType field's value.
6798func (s *InstanceGroupDetail) SetInstanceType(v string) *InstanceGroupDetail {
6799	s.InstanceType = &v
6800	return s
6801}
6802
6803// SetLastStateChangeReason sets the LastStateChangeReason field's value.
6804func (s *InstanceGroupDetail) SetLastStateChangeReason(v string) *InstanceGroupDetail {
6805	s.LastStateChangeReason = &v
6806	return s
6807}
6808
6809// SetMarket sets the Market field's value.
6810func (s *InstanceGroupDetail) SetMarket(v string) *InstanceGroupDetail {
6811	s.Market = &v
6812	return s
6813}
6814
6815// SetName sets the Name field's value.
6816func (s *InstanceGroupDetail) SetName(v string) *InstanceGroupDetail {
6817	s.Name = &v
6818	return s
6819}
6820
6821// SetReadyDateTime sets the ReadyDateTime field's value.
6822func (s *InstanceGroupDetail) SetReadyDateTime(v time.Time) *InstanceGroupDetail {
6823	s.ReadyDateTime = &v
6824	return s
6825}
6826
6827// SetStartDateTime sets the StartDateTime field's value.
6828func (s *InstanceGroupDetail) SetStartDateTime(v time.Time) *InstanceGroupDetail {
6829	s.StartDateTime = &v
6830	return s
6831}
6832
6833// SetState sets the State field's value.
6834func (s *InstanceGroupDetail) SetState(v string) *InstanceGroupDetail {
6835	s.State = &v
6836	return s
6837}
6838
6839// Modify the size or configurations of an instance group.
6840type InstanceGroupModifyConfig struct {
6841	_ struct{} `type:"structure"`
6842
6843	// A list of new or modified configurations to apply for an instance group.
6844	Configurations []*Configuration `type:"list"`
6845
6846	// The EC2 InstanceIds to terminate. After you terminate the instances, the
6847	// instance group will not return to its original requested size.
6848	EC2InstanceIdsToTerminate []*string `type:"list"`
6849
6850	// Target size for the instance group.
6851	InstanceCount *int64 `type:"integer"`
6852
6853	// Unique ID of the instance group to expand or shrink.
6854	//
6855	// InstanceGroupId is a required field
6856	InstanceGroupId *string `type:"string" required:"true"`
6857
6858	// Policy for customizing shrink operations.
6859	ShrinkPolicy *ShrinkPolicy `type:"structure"`
6860}
6861
6862// String returns the string representation
6863func (s InstanceGroupModifyConfig) String() string {
6864	return awsutil.Prettify(s)
6865}
6866
6867// GoString returns the string representation
6868func (s InstanceGroupModifyConfig) GoString() string {
6869	return s.String()
6870}
6871
6872// Validate inspects the fields of the type to determine if they are valid.
6873func (s *InstanceGroupModifyConfig) Validate() error {
6874	invalidParams := request.ErrInvalidParams{Context: "InstanceGroupModifyConfig"}
6875	if s.InstanceGroupId == nil {
6876		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
6877	}
6878
6879	if invalidParams.Len() > 0 {
6880		return invalidParams
6881	}
6882	return nil
6883}
6884
6885// SetConfigurations sets the Configurations field's value.
6886func (s *InstanceGroupModifyConfig) SetConfigurations(v []*Configuration) *InstanceGroupModifyConfig {
6887	s.Configurations = v
6888	return s
6889}
6890
6891// SetEC2InstanceIdsToTerminate sets the EC2InstanceIdsToTerminate field's value.
6892func (s *InstanceGroupModifyConfig) SetEC2InstanceIdsToTerminate(v []*string) *InstanceGroupModifyConfig {
6893	s.EC2InstanceIdsToTerminate = v
6894	return s
6895}
6896
6897// SetInstanceCount sets the InstanceCount field's value.
6898func (s *InstanceGroupModifyConfig) SetInstanceCount(v int64) *InstanceGroupModifyConfig {
6899	s.InstanceCount = &v
6900	return s
6901}
6902
6903// SetInstanceGroupId sets the InstanceGroupId field's value.
6904func (s *InstanceGroupModifyConfig) SetInstanceGroupId(v string) *InstanceGroupModifyConfig {
6905	s.InstanceGroupId = &v
6906	return s
6907}
6908
6909// SetShrinkPolicy sets the ShrinkPolicy field's value.
6910func (s *InstanceGroupModifyConfig) SetShrinkPolicy(v *ShrinkPolicy) *InstanceGroupModifyConfig {
6911	s.ShrinkPolicy = v
6912	return s
6913}
6914
6915// The status change reason details for the instance group.
6916type InstanceGroupStateChangeReason struct {
6917	_ struct{} `type:"structure"`
6918
6919	// The programmable code for the state change reason.
6920	Code *string `type:"string" enum:"InstanceGroupStateChangeReasonCode"`
6921
6922	// The status change reason description.
6923	Message *string `type:"string"`
6924}
6925
6926// String returns the string representation
6927func (s InstanceGroupStateChangeReason) String() string {
6928	return awsutil.Prettify(s)
6929}
6930
6931// GoString returns the string representation
6932func (s InstanceGroupStateChangeReason) GoString() string {
6933	return s.String()
6934}
6935
6936// SetCode sets the Code field's value.
6937func (s *InstanceGroupStateChangeReason) SetCode(v string) *InstanceGroupStateChangeReason {
6938	s.Code = &v
6939	return s
6940}
6941
6942// SetMessage sets the Message field's value.
6943func (s *InstanceGroupStateChangeReason) SetMessage(v string) *InstanceGroupStateChangeReason {
6944	s.Message = &v
6945	return s
6946}
6947
6948// The details of the instance group status.
6949type InstanceGroupStatus struct {
6950	_ struct{} `type:"structure"`
6951
6952	// The current state of the instance group.
6953	State *string `type:"string" enum:"InstanceGroupState"`
6954
6955	// The status change reason details for the instance group.
6956	StateChangeReason *InstanceGroupStateChangeReason `type:"structure"`
6957
6958	// The timeline of the instance group status over time.
6959	Timeline *InstanceGroupTimeline `type:"structure"`
6960}
6961
6962// String returns the string representation
6963func (s InstanceGroupStatus) String() string {
6964	return awsutil.Prettify(s)
6965}
6966
6967// GoString returns the string representation
6968func (s InstanceGroupStatus) GoString() string {
6969	return s.String()
6970}
6971
6972// SetState sets the State field's value.
6973func (s *InstanceGroupStatus) SetState(v string) *InstanceGroupStatus {
6974	s.State = &v
6975	return s
6976}
6977
6978// SetStateChangeReason sets the StateChangeReason field's value.
6979func (s *InstanceGroupStatus) SetStateChangeReason(v *InstanceGroupStateChangeReason) *InstanceGroupStatus {
6980	s.StateChangeReason = v
6981	return s
6982}
6983
6984// SetTimeline sets the Timeline field's value.
6985func (s *InstanceGroupStatus) SetTimeline(v *InstanceGroupTimeline) *InstanceGroupStatus {
6986	s.Timeline = v
6987	return s
6988}
6989
6990// The timeline of the instance group lifecycle.
6991type InstanceGroupTimeline struct {
6992	_ struct{} `type:"structure"`
6993
6994	// The creation date and time of the instance group.
6995	CreationDateTime *time.Time `type:"timestamp"`
6996
6997	// The date and time when the instance group terminated.
6998	EndDateTime *time.Time `type:"timestamp"`
6999
7000	// The date and time when the instance group became ready to perform tasks.
7001	ReadyDateTime *time.Time `type:"timestamp"`
7002}
7003
7004// String returns the string representation
7005func (s InstanceGroupTimeline) String() string {
7006	return awsutil.Prettify(s)
7007}
7008
7009// GoString returns the string representation
7010func (s InstanceGroupTimeline) GoString() string {
7011	return s.String()
7012}
7013
7014// SetCreationDateTime sets the CreationDateTime field's value.
7015func (s *InstanceGroupTimeline) SetCreationDateTime(v time.Time) *InstanceGroupTimeline {
7016	s.CreationDateTime = &v
7017	return s
7018}
7019
7020// SetEndDateTime sets the EndDateTime field's value.
7021func (s *InstanceGroupTimeline) SetEndDateTime(v time.Time) *InstanceGroupTimeline {
7022	s.EndDateTime = &v
7023	return s
7024}
7025
7026// SetReadyDateTime sets the ReadyDateTime field's value.
7027func (s *InstanceGroupTimeline) SetReadyDateTime(v time.Time) *InstanceGroupTimeline {
7028	s.ReadyDateTime = &v
7029	return s
7030}
7031
7032// Custom policy for requesting termination protection or termination of specific
7033// instances when shrinking an instance group.
7034type InstanceResizePolicy struct {
7035	_ struct{} `type:"structure"`
7036
7037	// Decommissioning timeout override for the specific list of instances to be
7038	// terminated.
7039	InstanceTerminationTimeout *int64 `type:"integer"`
7040
7041	// Specific list of instances to be protected when shrinking an instance group.
7042	InstancesToProtect []*string `type:"list"`
7043
7044	// Specific list of instances to be terminated when shrinking an instance group.
7045	InstancesToTerminate []*string `type:"list"`
7046}
7047
7048// String returns the string representation
7049func (s InstanceResizePolicy) String() string {
7050	return awsutil.Prettify(s)
7051}
7052
7053// GoString returns the string representation
7054func (s InstanceResizePolicy) GoString() string {
7055	return s.String()
7056}
7057
7058// SetInstanceTerminationTimeout sets the InstanceTerminationTimeout field's value.
7059func (s *InstanceResizePolicy) SetInstanceTerminationTimeout(v int64) *InstanceResizePolicy {
7060	s.InstanceTerminationTimeout = &v
7061	return s
7062}
7063
7064// SetInstancesToProtect sets the InstancesToProtect field's value.
7065func (s *InstanceResizePolicy) SetInstancesToProtect(v []*string) *InstanceResizePolicy {
7066	s.InstancesToProtect = v
7067	return s
7068}
7069
7070// SetInstancesToTerminate sets the InstancesToTerminate field's value.
7071func (s *InstanceResizePolicy) SetInstancesToTerminate(v []*string) *InstanceResizePolicy {
7072	s.InstancesToTerminate = v
7073	return s
7074}
7075
7076// The details of the status change reason for the instance.
7077type InstanceStateChangeReason struct {
7078	_ struct{} `type:"structure"`
7079
7080	// The programmable code for the state change reason.
7081	Code *string `type:"string" enum:"InstanceStateChangeReasonCode"`
7082
7083	// The status change reason description.
7084	Message *string `type:"string"`
7085}
7086
7087// String returns the string representation
7088func (s InstanceStateChangeReason) String() string {
7089	return awsutil.Prettify(s)
7090}
7091
7092// GoString returns the string representation
7093func (s InstanceStateChangeReason) GoString() string {
7094	return s.String()
7095}
7096
7097// SetCode sets the Code field's value.
7098func (s *InstanceStateChangeReason) SetCode(v string) *InstanceStateChangeReason {
7099	s.Code = &v
7100	return s
7101}
7102
7103// SetMessage sets the Message field's value.
7104func (s *InstanceStateChangeReason) SetMessage(v string) *InstanceStateChangeReason {
7105	s.Message = &v
7106	return s
7107}
7108
7109// The instance status details.
7110type InstanceStatus struct {
7111	_ struct{} `type:"structure"`
7112
7113	// The current state of the instance.
7114	State *string `type:"string" enum:"InstanceState"`
7115
7116	// The details of the status change reason for the instance.
7117	StateChangeReason *InstanceStateChangeReason `type:"structure"`
7118
7119	// The timeline of the instance status over time.
7120	Timeline *InstanceTimeline `type:"structure"`
7121}
7122
7123// String returns the string representation
7124func (s InstanceStatus) String() string {
7125	return awsutil.Prettify(s)
7126}
7127
7128// GoString returns the string representation
7129func (s InstanceStatus) GoString() string {
7130	return s.String()
7131}
7132
7133// SetState sets the State field's value.
7134func (s *InstanceStatus) SetState(v string) *InstanceStatus {
7135	s.State = &v
7136	return s
7137}
7138
7139// SetStateChangeReason sets the StateChangeReason field's value.
7140func (s *InstanceStatus) SetStateChangeReason(v *InstanceStateChangeReason) *InstanceStatus {
7141	s.StateChangeReason = v
7142	return s
7143}
7144
7145// SetTimeline sets the Timeline field's value.
7146func (s *InstanceStatus) SetTimeline(v *InstanceTimeline) *InstanceStatus {
7147	s.Timeline = v
7148	return s
7149}
7150
7151// The timeline of the instance lifecycle.
7152type InstanceTimeline struct {
7153	_ struct{} `type:"structure"`
7154
7155	// The creation date and time of the instance.
7156	CreationDateTime *time.Time `type:"timestamp"`
7157
7158	// The date and time when the instance was terminated.
7159	EndDateTime *time.Time `type:"timestamp"`
7160
7161	// The date and time when the instance was ready to perform tasks.
7162	ReadyDateTime *time.Time `type:"timestamp"`
7163}
7164
7165// String returns the string representation
7166func (s InstanceTimeline) String() string {
7167	return awsutil.Prettify(s)
7168}
7169
7170// GoString returns the string representation
7171func (s InstanceTimeline) GoString() string {
7172	return s.String()
7173}
7174
7175// SetCreationDateTime sets the CreationDateTime field's value.
7176func (s *InstanceTimeline) SetCreationDateTime(v time.Time) *InstanceTimeline {
7177	s.CreationDateTime = &v
7178	return s
7179}
7180
7181// SetEndDateTime sets the EndDateTime field's value.
7182func (s *InstanceTimeline) SetEndDateTime(v time.Time) *InstanceTimeline {
7183	s.EndDateTime = &v
7184	return s
7185}
7186
7187// SetReadyDateTime sets the ReadyDateTime field's value.
7188func (s *InstanceTimeline) SetReadyDateTime(v time.Time) *InstanceTimeline {
7189	s.ReadyDateTime = &v
7190	return s
7191}
7192
7193// An instance type configuration for each instance type in an instance fleet,
7194// which determines the EC2 instances Amazon EMR attempts to provision to fulfill
7195// On-Demand and Spot target capacities. There can be a maximum of 5 instance
7196// type configurations in a fleet.
7197//
7198// The instance fleet configuration is available only in Amazon EMR versions
7199// 4.8.0 and later, excluding 5.0.x versions.
7200type InstanceTypeConfig struct {
7201	_ struct{} `type:"structure"`
7202
7203	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7204	// Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice
7205	// is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7206	BidPrice *string `type:"string"`
7207
7208	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7209	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7210	// 20%). If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided,
7211	// BidPriceAsPercentageOfOnDemandPrice defaults to 100%.
7212	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7213
7214	// A configuration classification that applies when provisioning cluster instances,
7215	// which can include configurations for applications and software that run on
7216	// the cluster.
7217	Configurations []*Configuration `type:"list"`
7218
7219	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7220	// instance as defined by InstanceType.
7221	EbsConfiguration *EbsConfiguration `type:"structure"`
7222
7223	// An EC2 instance type, such as m3.xlarge.
7224	//
7225	// InstanceType is a required field
7226	InstanceType *string `min:"1" type:"string" required:"true"`
7227
7228	// The number of units that a provisioned instance of this type provides toward
7229	// fulfilling the target capacities defined in InstanceFleetConfig. This value
7230	// is 1 for a master instance fleet, and must be 1 or greater for core and task
7231	// instance fleets. Defaults to 1 if not specified.
7232	WeightedCapacity *int64 `type:"integer"`
7233}
7234
7235// String returns the string representation
7236func (s InstanceTypeConfig) String() string {
7237	return awsutil.Prettify(s)
7238}
7239
7240// GoString returns the string representation
7241func (s InstanceTypeConfig) GoString() string {
7242	return s.String()
7243}
7244
7245// Validate inspects the fields of the type to determine if they are valid.
7246func (s *InstanceTypeConfig) Validate() error {
7247	invalidParams := request.ErrInvalidParams{Context: "InstanceTypeConfig"}
7248	if s.InstanceType == nil {
7249		invalidParams.Add(request.NewErrParamRequired("InstanceType"))
7250	}
7251	if s.InstanceType != nil && len(*s.InstanceType) < 1 {
7252		invalidParams.Add(request.NewErrParamMinLen("InstanceType", 1))
7253	}
7254	if s.EbsConfiguration != nil {
7255		if err := s.EbsConfiguration.Validate(); err != nil {
7256			invalidParams.AddNested("EbsConfiguration", err.(request.ErrInvalidParams))
7257		}
7258	}
7259
7260	if invalidParams.Len() > 0 {
7261		return invalidParams
7262	}
7263	return nil
7264}
7265
7266// SetBidPrice sets the BidPrice field's value.
7267func (s *InstanceTypeConfig) SetBidPrice(v string) *InstanceTypeConfig {
7268	s.BidPrice = &v
7269	return s
7270}
7271
7272// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7273func (s *InstanceTypeConfig) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeConfig {
7274	s.BidPriceAsPercentageOfOnDemandPrice = &v
7275	return s
7276}
7277
7278// SetConfigurations sets the Configurations field's value.
7279func (s *InstanceTypeConfig) SetConfigurations(v []*Configuration) *InstanceTypeConfig {
7280	s.Configurations = v
7281	return s
7282}
7283
7284// SetEbsConfiguration sets the EbsConfiguration field's value.
7285func (s *InstanceTypeConfig) SetEbsConfiguration(v *EbsConfiguration) *InstanceTypeConfig {
7286	s.EbsConfiguration = v
7287	return s
7288}
7289
7290// SetInstanceType sets the InstanceType field's value.
7291func (s *InstanceTypeConfig) SetInstanceType(v string) *InstanceTypeConfig {
7292	s.InstanceType = &v
7293	return s
7294}
7295
7296// SetWeightedCapacity sets the WeightedCapacity field's value.
7297func (s *InstanceTypeConfig) SetWeightedCapacity(v int64) *InstanceTypeConfig {
7298	s.WeightedCapacity = &v
7299	return s
7300}
7301
7302// The configuration specification for each instance type in an instance fleet.
7303//
7304// The instance fleet configuration is available only in Amazon EMR versions
7305// 4.8.0 and later, excluding 5.0.x versions.
7306type InstanceTypeSpecification struct {
7307	_ struct{} `type:"structure"`
7308
7309	// The bid price for each EC2 Spot instance type as defined by InstanceType.
7310	// Expressed in USD.
7311	BidPrice *string `type:"string"`
7312
7313	// The bid price, as a percentage of On-Demand price, for each EC2 Spot instance
7314	// as defined by InstanceType. Expressed as a number (for example, 20 specifies
7315	// 20%).
7316	BidPriceAsPercentageOfOnDemandPrice *float64 `type:"double"`
7317
7318	// A configuration classification that applies when provisioning cluster instances,
7319	// which can include configurations for applications and software bundled with
7320	// Amazon EMR.
7321	Configurations []*Configuration `type:"list"`
7322
7323	// The configuration of Amazon Elastic Block Storage (EBS) attached to each
7324	// instance as defined by InstanceType.
7325	EbsBlockDevices []*EbsBlockDevice `type:"list"`
7326
7327	// Evaluates to TRUE when the specified InstanceType is EBS-optimized.
7328	EbsOptimized *bool `type:"boolean"`
7329
7330	// The EC2 instance type, for example m3.xlarge.
7331	InstanceType *string `min:"1" type:"string"`
7332
7333	// The number of units that a provisioned instance of this type provides toward
7334	// fulfilling the target capacities defined in InstanceFleetConfig. Capacity
7335	// values represent performance characteristics such as vCPUs, memory, or I/O.
7336	// If not specified, the default value is 1.
7337	WeightedCapacity *int64 `type:"integer"`
7338}
7339
7340// String returns the string representation
7341func (s InstanceTypeSpecification) String() string {
7342	return awsutil.Prettify(s)
7343}
7344
7345// GoString returns the string representation
7346func (s InstanceTypeSpecification) GoString() string {
7347	return s.String()
7348}
7349
7350// SetBidPrice sets the BidPrice field's value.
7351func (s *InstanceTypeSpecification) SetBidPrice(v string) *InstanceTypeSpecification {
7352	s.BidPrice = &v
7353	return s
7354}
7355
7356// SetBidPriceAsPercentageOfOnDemandPrice sets the BidPriceAsPercentageOfOnDemandPrice field's value.
7357func (s *InstanceTypeSpecification) SetBidPriceAsPercentageOfOnDemandPrice(v float64) *InstanceTypeSpecification {
7358	s.BidPriceAsPercentageOfOnDemandPrice = &v
7359	return s
7360}
7361
7362// SetConfigurations sets the Configurations field's value.
7363func (s *InstanceTypeSpecification) SetConfigurations(v []*Configuration) *InstanceTypeSpecification {
7364	s.Configurations = v
7365	return s
7366}
7367
7368// SetEbsBlockDevices sets the EbsBlockDevices field's value.
7369func (s *InstanceTypeSpecification) SetEbsBlockDevices(v []*EbsBlockDevice) *InstanceTypeSpecification {
7370	s.EbsBlockDevices = v
7371	return s
7372}
7373
7374// SetEbsOptimized sets the EbsOptimized field's value.
7375func (s *InstanceTypeSpecification) SetEbsOptimized(v bool) *InstanceTypeSpecification {
7376	s.EbsOptimized = &v
7377	return s
7378}
7379
7380// SetInstanceType sets the InstanceType field's value.
7381func (s *InstanceTypeSpecification) SetInstanceType(v string) *InstanceTypeSpecification {
7382	s.InstanceType = &v
7383	return s
7384}
7385
7386// SetWeightedCapacity sets the WeightedCapacity field's value.
7387func (s *InstanceTypeSpecification) SetWeightedCapacity(v int64) *InstanceTypeSpecification {
7388	s.WeightedCapacity = &v
7389	return s
7390}
7391
7392// A description of a cluster (job flow).
7393type JobFlowDetail struct {
7394	_ struct{} `type:"structure"`
7395
7396	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
7397	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
7398	AmiVersion *string `type:"string"`
7399
7400	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
7401	// The IAM role provides a way for the automatic scaling feature to get the
7402	// required permissions it needs to launch and terminate EC2 instances in an
7403	// instance group.
7404	AutoScalingRole *string `type:"string"`
7405
7406	// A list of the bootstrap actions run by the job flow.
7407	BootstrapActions []*BootstrapActionDetail `type:"list"`
7408
7409	// Describes the execution status of the job flow.
7410	//
7411	// ExecutionStatusDetail is a required field
7412	ExecutionStatusDetail *JobFlowExecutionStatusDetail `type:"structure" required:"true"`
7413
7414	// Describes the Amazon EC2 instances of the job flow.
7415	//
7416	// Instances is a required field
7417	Instances *JobFlowInstancesDetail `type:"structure" required:"true"`
7418
7419	// The job flow identifier.
7420	//
7421	// JobFlowId is a required field
7422	JobFlowId *string `type:"string" required:"true"`
7423
7424	// The IAM role that was specified when the job flow was launched. The EC2 instances
7425	// of the job flow assume this role.
7426	JobFlowRole *string `type:"string"`
7427
7428	// The location in Amazon S3 where log files for the job are stored.
7429	LogUri *string `type:"string"`
7430
7431	// The name of the job flow.
7432	//
7433	// Name is a required field
7434	Name *string `type:"string" required:"true"`
7435
7436	// The way that individual Amazon EC2 instances terminate when an automatic
7437	// scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
7438	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
7439	// regardless of when the request to terminate the instance was submitted. This
7440	// option is only available with Amazon EMR 5.1.0 and later and is the default
7441	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
7442	// that Amazon EMR blacklists and drains tasks from nodes before terminating
7443	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
7444	// either behavior, Amazon EMR removes the least active nodes first and blocks
7445	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
7446	// available only in Amazon EMR version 4.1.0 and later, and is the default
7447	// for versions of Amazon EMR earlier than 5.1.0.
7448	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
7449
7450	// The IAM role that will be assumed by the Amazon EMR service to access AWS
7451	// resources on your behalf.
7452	ServiceRole *string `type:"string"`
7453
7454	// A list of steps run by the job flow.
7455	Steps []*StepDetail `type:"list"`
7456
7457	// A list of strings set by third party software when the job flow is launched.
7458	// If you are not using third party software to manage the job flow this value
7459	// is empty.
7460	SupportedProducts []*string `type:"list"`
7461
7462	// Indicates whether the cluster is visible to all IAM users of the AWS account
7463	// associated with the cluster. The default value, true, indicates that all
7464	// IAM users in the AWS account can perform cluster actions if they have the
7465	// proper IAM policy permissions. If this value is false, only the IAM user
7466	// that created the cluster can perform actions. This value can be changed on
7467	// a running cluster by using the SetVisibleToAllUsers action. You can override
7468	// the default value of true when you create a cluster by using the VisibleToAllUsers
7469	// parameter of the RunJobFlow action.
7470	VisibleToAllUsers *bool `type:"boolean"`
7471}
7472
7473// String returns the string representation
7474func (s JobFlowDetail) String() string {
7475	return awsutil.Prettify(s)
7476}
7477
7478// GoString returns the string representation
7479func (s JobFlowDetail) GoString() string {
7480	return s.String()
7481}
7482
7483// SetAmiVersion sets the AmiVersion field's value.
7484func (s *JobFlowDetail) SetAmiVersion(v string) *JobFlowDetail {
7485	s.AmiVersion = &v
7486	return s
7487}
7488
7489// SetAutoScalingRole sets the AutoScalingRole field's value.
7490func (s *JobFlowDetail) SetAutoScalingRole(v string) *JobFlowDetail {
7491	s.AutoScalingRole = &v
7492	return s
7493}
7494
7495// SetBootstrapActions sets the BootstrapActions field's value.
7496func (s *JobFlowDetail) SetBootstrapActions(v []*BootstrapActionDetail) *JobFlowDetail {
7497	s.BootstrapActions = v
7498	return s
7499}
7500
7501// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
7502func (s *JobFlowDetail) SetExecutionStatusDetail(v *JobFlowExecutionStatusDetail) *JobFlowDetail {
7503	s.ExecutionStatusDetail = v
7504	return s
7505}
7506
7507// SetInstances sets the Instances field's value.
7508func (s *JobFlowDetail) SetInstances(v *JobFlowInstancesDetail) *JobFlowDetail {
7509	s.Instances = v
7510	return s
7511}
7512
7513// SetJobFlowId sets the JobFlowId field's value.
7514func (s *JobFlowDetail) SetJobFlowId(v string) *JobFlowDetail {
7515	s.JobFlowId = &v
7516	return s
7517}
7518
7519// SetJobFlowRole sets the JobFlowRole field's value.
7520func (s *JobFlowDetail) SetJobFlowRole(v string) *JobFlowDetail {
7521	s.JobFlowRole = &v
7522	return s
7523}
7524
7525// SetLogUri sets the LogUri field's value.
7526func (s *JobFlowDetail) SetLogUri(v string) *JobFlowDetail {
7527	s.LogUri = &v
7528	return s
7529}
7530
7531// SetName sets the Name field's value.
7532func (s *JobFlowDetail) SetName(v string) *JobFlowDetail {
7533	s.Name = &v
7534	return s
7535}
7536
7537// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
7538func (s *JobFlowDetail) SetScaleDownBehavior(v string) *JobFlowDetail {
7539	s.ScaleDownBehavior = &v
7540	return s
7541}
7542
7543// SetServiceRole sets the ServiceRole field's value.
7544func (s *JobFlowDetail) SetServiceRole(v string) *JobFlowDetail {
7545	s.ServiceRole = &v
7546	return s
7547}
7548
7549// SetSteps sets the Steps field's value.
7550func (s *JobFlowDetail) SetSteps(v []*StepDetail) *JobFlowDetail {
7551	s.Steps = v
7552	return s
7553}
7554
7555// SetSupportedProducts sets the SupportedProducts field's value.
7556func (s *JobFlowDetail) SetSupportedProducts(v []*string) *JobFlowDetail {
7557	s.SupportedProducts = v
7558	return s
7559}
7560
7561// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
7562func (s *JobFlowDetail) SetVisibleToAllUsers(v bool) *JobFlowDetail {
7563	s.VisibleToAllUsers = &v
7564	return s
7565}
7566
7567// Describes the status of the cluster (job flow).
7568type JobFlowExecutionStatusDetail struct {
7569	_ struct{} `type:"structure"`
7570
7571	// The creation date and time of the job flow.
7572	//
7573	// CreationDateTime is a required field
7574	CreationDateTime *time.Time `type:"timestamp" required:"true"`
7575
7576	// The completion date and time of the job flow.
7577	EndDateTime *time.Time `type:"timestamp"`
7578
7579	// Description of the job flow last changed state.
7580	LastStateChangeReason *string `type:"string"`
7581
7582	// The date and time when the job flow was ready to start running bootstrap
7583	// actions.
7584	ReadyDateTime *time.Time `type:"timestamp"`
7585
7586	// The start date and time of the job flow.
7587	StartDateTime *time.Time `type:"timestamp"`
7588
7589	// The state of the job flow.
7590	//
7591	// State is a required field
7592	State *string `type:"string" required:"true" enum:"JobFlowExecutionState"`
7593}
7594
7595// String returns the string representation
7596func (s JobFlowExecutionStatusDetail) String() string {
7597	return awsutil.Prettify(s)
7598}
7599
7600// GoString returns the string representation
7601func (s JobFlowExecutionStatusDetail) GoString() string {
7602	return s.String()
7603}
7604
7605// SetCreationDateTime sets the CreationDateTime field's value.
7606func (s *JobFlowExecutionStatusDetail) SetCreationDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7607	s.CreationDateTime = &v
7608	return s
7609}
7610
7611// SetEndDateTime sets the EndDateTime field's value.
7612func (s *JobFlowExecutionStatusDetail) SetEndDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7613	s.EndDateTime = &v
7614	return s
7615}
7616
7617// SetLastStateChangeReason sets the LastStateChangeReason field's value.
7618func (s *JobFlowExecutionStatusDetail) SetLastStateChangeReason(v string) *JobFlowExecutionStatusDetail {
7619	s.LastStateChangeReason = &v
7620	return s
7621}
7622
7623// SetReadyDateTime sets the ReadyDateTime field's value.
7624func (s *JobFlowExecutionStatusDetail) SetReadyDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7625	s.ReadyDateTime = &v
7626	return s
7627}
7628
7629// SetStartDateTime sets the StartDateTime field's value.
7630func (s *JobFlowExecutionStatusDetail) SetStartDateTime(v time.Time) *JobFlowExecutionStatusDetail {
7631	s.StartDateTime = &v
7632	return s
7633}
7634
7635// SetState sets the State field's value.
7636func (s *JobFlowExecutionStatusDetail) SetState(v string) *JobFlowExecutionStatusDetail {
7637	s.State = &v
7638	return s
7639}
7640
7641// A description of the Amazon EC2 instance on which the cluster (job flow)
7642// runs. A valid JobFlowInstancesConfig must contain either InstanceGroups or
7643// InstanceFleets, which is the recommended configuration. They cannot be used
7644// together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount
7645// (all three must be present), but we don't recommend this configuration.
7646type JobFlowInstancesConfig struct {
7647	_ struct{} `type:"structure"`
7648
7649	// A list of additional Amazon EC2 security group IDs for the master node.
7650	AdditionalMasterSecurityGroups []*string `type:"list"`
7651
7652	// A list of additional Amazon EC2 security group IDs for the core and task
7653	// nodes.
7654	AdditionalSlaveSecurityGroups []*string `type:"list"`
7655
7656	// The name of the EC2 key pair that can be used to ssh to the master node as
7657	// the user called "hadoop."
7658	Ec2KeyName *string `type:"string"`
7659
7660	// Applies to clusters that use the uniform instance group configuration. To
7661	// launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this
7662	// parameter to the identifier of the Amazon VPC subnet where you want the cluster
7663	// to launch. If you do not specify this value and your account supports EC2-Classic,
7664	// the cluster launches in EC2-Classic.
7665	Ec2SubnetId *string `type:"string"`
7666
7667	// Applies to clusters that use the instance fleet configuration. When multiple
7668	// EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances
7669	// in the optimal subnet.
7670	//
7671	// The instance fleet configuration is available only in Amazon EMR versions
7672	// 4.8.0 and later, excluding 5.0.x versions.
7673	Ec2SubnetIds []*string `type:"list"`
7674
7675	// The identifier of the Amazon EC2 security group for the master node.
7676	EmrManagedMasterSecurityGroup *string `type:"string"`
7677
7678	// The identifier of the Amazon EC2 security group for the core and task nodes.
7679	EmrManagedSlaveSecurityGroup *string `type:"string"`
7680
7681	// Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop
7682	// version for the cluster. Valid inputs are "0.18" (deprecated), "0.20" (deprecated),
7683	// "0.20.205" (deprecated), "1.0.3", "2.2.0", or "2.4.0". If you do not set
7684	// this value, the default of 0.18 is used, unless the AmiVersion parameter
7685	// is set in the RunJobFlow call, in which case the default version of Hadoop
7686	// for that AMI version is used.
7687	HadoopVersion *string `type:"string"`
7688
7689	// The number of EC2 instances in the cluster.
7690	InstanceCount *int64 `type:"integer"`
7691
7692	//
7693	// The instance fleet configuration is available only in Amazon EMR versions
7694	// 4.8.0 and later, excluding 5.0.x versions.
7695	//
7696	// Describes the EC2 instances and instance configurations for clusters that
7697	// use the instance fleet configuration.
7698	InstanceFleets []*InstanceFleetConfig `type:"list"`
7699
7700	// Configuration for the instance groups in a cluster.
7701	InstanceGroups []*InstanceGroupConfig `type:"list"`
7702
7703	// Specifies whether the cluster should remain available after completing all
7704	// steps.
7705	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
7706
7707	// The EC2 instance type of the master node.
7708	MasterInstanceType *string `min:"1" type:"string"`
7709
7710	// The Availability Zone in which the cluster runs.
7711	Placement *PlacementType `type:"structure"`
7712
7713	// The identifier of the Amazon EC2 security group for the Amazon EMR service
7714	// to access clusters in VPC private subnets.
7715	ServiceAccessSecurityGroup *string `type:"string"`
7716
7717	// The EC2 instance type of the core and task nodes.
7718	SlaveInstanceType *string `min:"1" type:"string"`
7719
7720	// Specifies whether to lock the cluster to prevent the Amazon EC2 instances
7721	// from being terminated by API call, user intervention, or in the event of
7722	// a job-flow error.
7723	TerminationProtected *bool `type:"boolean"`
7724}
7725
7726// String returns the string representation
7727func (s JobFlowInstancesConfig) String() string {
7728	return awsutil.Prettify(s)
7729}
7730
7731// GoString returns the string representation
7732func (s JobFlowInstancesConfig) GoString() string {
7733	return s.String()
7734}
7735
7736// Validate inspects the fields of the type to determine if they are valid.
7737func (s *JobFlowInstancesConfig) Validate() error {
7738	invalidParams := request.ErrInvalidParams{Context: "JobFlowInstancesConfig"}
7739	if s.MasterInstanceType != nil && len(*s.MasterInstanceType) < 1 {
7740		invalidParams.Add(request.NewErrParamMinLen("MasterInstanceType", 1))
7741	}
7742	if s.SlaveInstanceType != nil && len(*s.SlaveInstanceType) < 1 {
7743		invalidParams.Add(request.NewErrParamMinLen("SlaveInstanceType", 1))
7744	}
7745	if s.InstanceFleets != nil {
7746		for i, v := range s.InstanceFleets {
7747			if v == nil {
7748				continue
7749			}
7750			if err := v.Validate(); err != nil {
7751				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceFleets", i), err.(request.ErrInvalidParams))
7752			}
7753		}
7754	}
7755	if s.InstanceGroups != nil {
7756		for i, v := range s.InstanceGroups {
7757			if v == nil {
7758				continue
7759			}
7760			if err := v.Validate(); err != nil {
7761				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
7762			}
7763		}
7764	}
7765
7766	if invalidParams.Len() > 0 {
7767		return invalidParams
7768	}
7769	return nil
7770}
7771
7772// SetAdditionalMasterSecurityGroups sets the AdditionalMasterSecurityGroups field's value.
7773func (s *JobFlowInstancesConfig) SetAdditionalMasterSecurityGroups(v []*string) *JobFlowInstancesConfig {
7774	s.AdditionalMasterSecurityGroups = v
7775	return s
7776}
7777
7778// SetAdditionalSlaveSecurityGroups sets the AdditionalSlaveSecurityGroups field's value.
7779func (s *JobFlowInstancesConfig) SetAdditionalSlaveSecurityGroups(v []*string) *JobFlowInstancesConfig {
7780	s.AdditionalSlaveSecurityGroups = v
7781	return s
7782}
7783
7784// SetEc2KeyName sets the Ec2KeyName field's value.
7785func (s *JobFlowInstancesConfig) SetEc2KeyName(v string) *JobFlowInstancesConfig {
7786	s.Ec2KeyName = &v
7787	return s
7788}
7789
7790// SetEc2SubnetId sets the Ec2SubnetId field's value.
7791func (s *JobFlowInstancesConfig) SetEc2SubnetId(v string) *JobFlowInstancesConfig {
7792	s.Ec2SubnetId = &v
7793	return s
7794}
7795
7796// SetEc2SubnetIds sets the Ec2SubnetIds field's value.
7797func (s *JobFlowInstancesConfig) SetEc2SubnetIds(v []*string) *JobFlowInstancesConfig {
7798	s.Ec2SubnetIds = v
7799	return s
7800}
7801
7802// SetEmrManagedMasterSecurityGroup sets the EmrManagedMasterSecurityGroup field's value.
7803func (s *JobFlowInstancesConfig) SetEmrManagedMasterSecurityGroup(v string) *JobFlowInstancesConfig {
7804	s.EmrManagedMasterSecurityGroup = &v
7805	return s
7806}
7807
7808// SetEmrManagedSlaveSecurityGroup sets the EmrManagedSlaveSecurityGroup field's value.
7809func (s *JobFlowInstancesConfig) SetEmrManagedSlaveSecurityGroup(v string) *JobFlowInstancesConfig {
7810	s.EmrManagedSlaveSecurityGroup = &v
7811	return s
7812}
7813
7814// SetHadoopVersion sets the HadoopVersion field's value.
7815func (s *JobFlowInstancesConfig) SetHadoopVersion(v string) *JobFlowInstancesConfig {
7816	s.HadoopVersion = &v
7817	return s
7818}
7819
7820// SetInstanceCount sets the InstanceCount field's value.
7821func (s *JobFlowInstancesConfig) SetInstanceCount(v int64) *JobFlowInstancesConfig {
7822	s.InstanceCount = &v
7823	return s
7824}
7825
7826// SetInstanceFleets sets the InstanceFleets field's value.
7827func (s *JobFlowInstancesConfig) SetInstanceFleets(v []*InstanceFleetConfig) *JobFlowInstancesConfig {
7828	s.InstanceFleets = v
7829	return s
7830}
7831
7832// SetInstanceGroups sets the InstanceGroups field's value.
7833func (s *JobFlowInstancesConfig) SetInstanceGroups(v []*InstanceGroupConfig) *JobFlowInstancesConfig {
7834	s.InstanceGroups = v
7835	return s
7836}
7837
7838// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
7839func (s *JobFlowInstancesConfig) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesConfig {
7840	s.KeepJobFlowAliveWhenNoSteps = &v
7841	return s
7842}
7843
7844// SetMasterInstanceType sets the MasterInstanceType field's value.
7845func (s *JobFlowInstancesConfig) SetMasterInstanceType(v string) *JobFlowInstancesConfig {
7846	s.MasterInstanceType = &v
7847	return s
7848}
7849
7850// SetPlacement sets the Placement field's value.
7851func (s *JobFlowInstancesConfig) SetPlacement(v *PlacementType) *JobFlowInstancesConfig {
7852	s.Placement = v
7853	return s
7854}
7855
7856// SetServiceAccessSecurityGroup sets the ServiceAccessSecurityGroup field's value.
7857func (s *JobFlowInstancesConfig) SetServiceAccessSecurityGroup(v string) *JobFlowInstancesConfig {
7858	s.ServiceAccessSecurityGroup = &v
7859	return s
7860}
7861
7862// SetSlaveInstanceType sets the SlaveInstanceType field's value.
7863func (s *JobFlowInstancesConfig) SetSlaveInstanceType(v string) *JobFlowInstancesConfig {
7864	s.SlaveInstanceType = &v
7865	return s
7866}
7867
7868// SetTerminationProtected sets the TerminationProtected field's value.
7869func (s *JobFlowInstancesConfig) SetTerminationProtected(v bool) *JobFlowInstancesConfig {
7870	s.TerminationProtected = &v
7871	return s
7872}
7873
7874// Specify the type of Amazon EC2 instances that the cluster (job flow) runs
7875// on.
7876type JobFlowInstancesDetail struct {
7877	_ struct{} `type:"structure"`
7878
7879	// The name of an Amazon EC2 key pair that can be used to ssh to the master
7880	// node.
7881	Ec2KeyName *string `type:"string"`
7882
7883	// For clusters launched within Amazon Virtual Private Cloud, this is the identifier
7884	// of the subnet where the cluster was launched.
7885	Ec2SubnetId *string `type:"string"`
7886
7887	// The Hadoop version for the cluster.
7888	HadoopVersion *string `type:"string"`
7889
7890	// The number of Amazon EC2 instances in the cluster. If the value is 1, the
7891	// same instance serves as both the master and core and task node. If the value
7892	// is greater than 1, one instance is the master node and all others are core
7893	// and task nodes.
7894	//
7895	// InstanceCount is a required field
7896	InstanceCount *int64 `type:"integer" required:"true"`
7897
7898	// Details about the instance groups in a cluster.
7899	InstanceGroups []*InstanceGroupDetail `type:"list"`
7900
7901	// Specifies whether the cluster should remain available after completing all
7902	// steps.
7903	KeepJobFlowAliveWhenNoSteps *bool `type:"boolean"`
7904
7905	// The Amazon EC2 instance identifier of the master node.
7906	MasterInstanceId *string `type:"string"`
7907
7908	// The Amazon EC2 master node instance type.
7909	//
7910	// MasterInstanceType is a required field
7911	MasterInstanceType *string `min:"1" type:"string" required:"true"`
7912
7913	// The DNS name of the master node. If the cluster is on a private subnet, this
7914	// is the private DNS name. On a public subnet, this is the public DNS name.
7915	MasterPublicDnsName *string `type:"string"`
7916
7917	// An approximation of the cost of the cluster, represented in m1.small/hours.
7918	// This value is incremented one time for every hour that an m1.small runs.
7919	// Larger instances are weighted more, so an Amazon EC2 instance that is roughly
7920	// four times more expensive would result in the normalized instance hours being
7921	// incremented by four. This result is only an approximation and does not reflect
7922	// the actual billing rate.
7923	NormalizedInstanceHours *int64 `type:"integer"`
7924
7925	// The Amazon EC2 Availability Zone for the cluster.
7926	Placement *PlacementType `type:"structure"`
7927
7928	// The Amazon EC2 core and task node instance type.
7929	//
7930	// SlaveInstanceType is a required field
7931	SlaveInstanceType *string `min:"1" type:"string" required:"true"`
7932
7933	// Specifies whether the Amazon EC2 instances in the cluster are protected from
7934	// termination by API calls, user intervention, or in the event of a job-flow
7935	// error.
7936	TerminationProtected *bool `type:"boolean"`
7937}
7938
7939// String returns the string representation
7940func (s JobFlowInstancesDetail) String() string {
7941	return awsutil.Prettify(s)
7942}
7943
7944// GoString returns the string representation
7945func (s JobFlowInstancesDetail) GoString() string {
7946	return s.String()
7947}
7948
7949// SetEc2KeyName sets the Ec2KeyName field's value.
7950func (s *JobFlowInstancesDetail) SetEc2KeyName(v string) *JobFlowInstancesDetail {
7951	s.Ec2KeyName = &v
7952	return s
7953}
7954
7955// SetEc2SubnetId sets the Ec2SubnetId field's value.
7956func (s *JobFlowInstancesDetail) SetEc2SubnetId(v string) *JobFlowInstancesDetail {
7957	s.Ec2SubnetId = &v
7958	return s
7959}
7960
7961// SetHadoopVersion sets the HadoopVersion field's value.
7962func (s *JobFlowInstancesDetail) SetHadoopVersion(v string) *JobFlowInstancesDetail {
7963	s.HadoopVersion = &v
7964	return s
7965}
7966
7967// SetInstanceCount sets the InstanceCount field's value.
7968func (s *JobFlowInstancesDetail) SetInstanceCount(v int64) *JobFlowInstancesDetail {
7969	s.InstanceCount = &v
7970	return s
7971}
7972
7973// SetInstanceGroups sets the InstanceGroups field's value.
7974func (s *JobFlowInstancesDetail) SetInstanceGroups(v []*InstanceGroupDetail) *JobFlowInstancesDetail {
7975	s.InstanceGroups = v
7976	return s
7977}
7978
7979// SetKeepJobFlowAliveWhenNoSteps sets the KeepJobFlowAliveWhenNoSteps field's value.
7980func (s *JobFlowInstancesDetail) SetKeepJobFlowAliveWhenNoSteps(v bool) *JobFlowInstancesDetail {
7981	s.KeepJobFlowAliveWhenNoSteps = &v
7982	return s
7983}
7984
7985// SetMasterInstanceId sets the MasterInstanceId field's value.
7986func (s *JobFlowInstancesDetail) SetMasterInstanceId(v string) *JobFlowInstancesDetail {
7987	s.MasterInstanceId = &v
7988	return s
7989}
7990
7991// SetMasterInstanceType sets the MasterInstanceType field's value.
7992func (s *JobFlowInstancesDetail) SetMasterInstanceType(v string) *JobFlowInstancesDetail {
7993	s.MasterInstanceType = &v
7994	return s
7995}
7996
7997// SetMasterPublicDnsName sets the MasterPublicDnsName field's value.
7998func (s *JobFlowInstancesDetail) SetMasterPublicDnsName(v string) *JobFlowInstancesDetail {
7999	s.MasterPublicDnsName = &v
8000	return s
8001}
8002
8003// SetNormalizedInstanceHours sets the NormalizedInstanceHours field's value.
8004func (s *JobFlowInstancesDetail) SetNormalizedInstanceHours(v int64) *JobFlowInstancesDetail {
8005	s.NormalizedInstanceHours = &v
8006	return s
8007}
8008
8009// SetPlacement sets the Placement field's value.
8010func (s *JobFlowInstancesDetail) SetPlacement(v *PlacementType) *JobFlowInstancesDetail {
8011	s.Placement = v
8012	return s
8013}
8014
8015// SetSlaveInstanceType sets the SlaveInstanceType field's value.
8016func (s *JobFlowInstancesDetail) SetSlaveInstanceType(v string) *JobFlowInstancesDetail {
8017	s.SlaveInstanceType = &v
8018	return s
8019}
8020
8021// SetTerminationProtected sets the TerminationProtected field's value.
8022func (s *JobFlowInstancesDetail) SetTerminationProtected(v bool) *JobFlowInstancesDetail {
8023	s.TerminationProtected = &v
8024	return s
8025}
8026
8027// Attributes for Kerberos configuration when Kerberos authentication is enabled
8028// using a security configuration. For more information see Use Kerberos Authentication
8029// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
8030// in the EMR Management Guide.
8031type KerberosAttributes struct {
8032	_ struct{} `type:"structure"`
8033
8034	// The Active Directory password for ADDomainJoinUser.
8035	ADDomainJoinPassword *string `type:"string"`
8036
8037	// Required only when establishing a cross-realm trust with an Active Directory
8038	// domain. A user with sufficient privileges to join resources to the domain.
8039	ADDomainJoinUser *string `type:"string"`
8040
8041	// Required only when establishing a cross-realm trust with a KDC in a different
8042	// realm. The cross-realm principal password, which must be identical across
8043	// realms.
8044	CrossRealmTrustPrincipalPassword *string `type:"string"`
8045
8046	// The password used within the cluster for the kadmin service on the cluster-dedicated
8047	// KDC, which maintains Kerberos principals, password policies, and keytabs
8048	// for the cluster.
8049	//
8050	// KdcAdminPassword is a required field
8051	KdcAdminPassword *string `type:"string" required:"true"`
8052
8053	// The name of the Kerberos realm to which all nodes in a cluster belong. For
8054	// example, EC2.INTERNAL.
8055	//
8056	// Realm is a required field
8057	Realm *string `type:"string" required:"true"`
8058}
8059
8060// String returns the string representation
8061func (s KerberosAttributes) String() string {
8062	return awsutil.Prettify(s)
8063}
8064
8065// GoString returns the string representation
8066func (s KerberosAttributes) GoString() string {
8067	return s.String()
8068}
8069
8070// Validate inspects the fields of the type to determine if they are valid.
8071func (s *KerberosAttributes) Validate() error {
8072	invalidParams := request.ErrInvalidParams{Context: "KerberosAttributes"}
8073	if s.KdcAdminPassword == nil {
8074		invalidParams.Add(request.NewErrParamRequired("KdcAdminPassword"))
8075	}
8076	if s.Realm == nil {
8077		invalidParams.Add(request.NewErrParamRequired("Realm"))
8078	}
8079
8080	if invalidParams.Len() > 0 {
8081		return invalidParams
8082	}
8083	return nil
8084}
8085
8086// SetADDomainJoinPassword sets the ADDomainJoinPassword field's value.
8087func (s *KerberosAttributes) SetADDomainJoinPassword(v string) *KerberosAttributes {
8088	s.ADDomainJoinPassword = &v
8089	return s
8090}
8091
8092// SetADDomainJoinUser sets the ADDomainJoinUser field's value.
8093func (s *KerberosAttributes) SetADDomainJoinUser(v string) *KerberosAttributes {
8094	s.ADDomainJoinUser = &v
8095	return s
8096}
8097
8098// SetCrossRealmTrustPrincipalPassword sets the CrossRealmTrustPrincipalPassword field's value.
8099func (s *KerberosAttributes) SetCrossRealmTrustPrincipalPassword(v string) *KerberosAttributes {
8100	s.CrossRealmTrustPrincipalPassword = &v
8101	return s
8102}
8103
8104// SetKdcAdminPassword sets the KdcAdminPassword field's value.
8105func (s *KerberosAttributes) SetKdcAdminPassword(v string) *KerberosAttributes {
8106	s.KdcAdminPassword = &v
8107	return s
8108}
8109
8110// SetRealm sets the Realm field's value.
8111func (s *KerberosAttributes) SetRealm(v string) *KerberosAttributes {
8112	s.Realm = &v
8113	return s
8114}
8115
8116// A key value pair.
8117type KeyValue struct {
8118	_ struct{} `type:"structure"`
8119
8120	// The unique identifier of a key value pair.
8121	Key *string `type:"string"`
8122
8123	// The value part of the identified key.
8124	Value *string `type:"string"`
8125}
8126
8127// String returns the string representation
8128func (s KeyValue) String() string {
8129	return awsutil.Prettify(s)
8130}
8131
8132// GoString returns the string representation
8133func (s KeyValue) GoString() string {
8134	return s.String()
8135}
8136
8137// SetKey sets the Key field's value.
8138func (s *KeyValue) SetKey(v string) *KeyValue {
8139	s.Key = &v
8140	return s
8141}
8142
8143// SetValue sets the Value field's value.
8144func (s *KeyValue) SetValue(v string) *KeyValue {
8145	s.Value = &v
8146	return s
8147}
8148
8149// This input determines which bootstrap actions to retrieve.
8150type ListBootstrapActionsInput struct {
8151	_ struct{} `type:"structure"`
8152
8153	// The cluster identifier for the bootstrap actions to list.
8154	//
8155	// ClusterId is a required field
8156	ClusterId *string `type:"string" required:"true"`
8157
8158	// The pagination token that indicates the next set of results to retrieve.
8159	Marker *string `type:"string"`
8160}
8161
8162// String returns the string representation
8163func (s ListBootstrapActionsInput) String() string {
8164	return awsutil.Prettify(s)
8165}
8166
8167// GoString returns the string representation
8168func (s ListBootstrapActionsInput) GoString() string {
8169	return s.String()
8170}
8171
8172// Validate inspects the fields of the type to determine if they are valid.
8173func (s *ListBootstrapActionsInput) Validate() error {
8174	invalidParams := request.ErrInvalidParams{Context: "ListBootstrapActionsInput"}
8175	if s.ClusterId == nil {
8176		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8177	}
8178
8179	if invalidParams.Len() > 0 {
8180		return invalidParams
8181	}
8182	return nil
8183}
8184
8185// SetClusterId sets the ClusterId field's value.
8186func (s *ListBootstrapActionsInput) SetClusterId(v string) *ListBootstrapActionsInput {
8187	s.ClusterId = &v
8188	return s
8189}
8190
8191// SetMarker sets the Marker field's value.
8192func (s *ListBootstrapActionsInput) SetMarker(v string) *ListBootstrapActionsInput {
8193	s.Marker = &v
8194	return s
8195}
8196
8197// This output contains the bootstrap actions detail.
8198type ListBootstrapActionsOutput struct {
8199	_ struct{} `type:"structure"`
8200
8201	// The bootstrap actions associated with the cluster.
8202	BootstrapActions []*Command `type:"list"`
8203
8204	// The pagination token that indicates the next set of results to retrieve.
8205	Marker *string `type:"string"`
8206}
8207
8208// String returns the string representation
8209func (s ListBootstrapActionsOutput) String() string {
8210	return awsutil.Prettify(s)
8211}
8212
8213// GoString returns the string representation
8214func (s ListBootstrapActionsOutput) GoString() string {
8215	return s.String()
8216}
8217
8218// SetBootstrapActions sets the BootstrapActions field's value.
8219func (s *ListBootstrapActionsOutput) SetBootstrapActions(v []*Command) *ListBootstrapActionsOutput {
8220	s.BootstrapActions = v
8221	return s
8222}
8223
8224// SetMarker sets the Marker field's value.
8225func (s *ListBootstrapActionsOutput) SetMarker(v string) *ListBootstrapActionsOutput {
8226	s.Marker = &v
8227	return s
8228}
8229
8230// This input determines how the ListClusters action filters the list of clusters
8231// that it returns.
8232type ListClustersInput struct {
8233	_ struct{} `type:"structure"`
8234
8235	// The cluster state filters to apply when listing clusters.
8236	ClusterStates []*string `type:"list"`
8237
8238	// The creation date and time beginning value filter for listing clusters.
8239	CreatedAfter *time.Time `type:"timestamp"`
8240
8241	// The creation date and time end value filter for listing clusters.
8242	CreatedBefore *time.Time `type:"timestamp"`
8243
8244	// The pagination token that indicates the next set of results to retrieve.
8245	Marker *string `type:"string"`
8246}
8247
8248// String returns the string representation
8249func (s ListClustersInput) String() string {
8250	return awsutil.Prettify(s)
8251}
8252
8253// GoString returns the string representation
8254func (s ListClustersInput) GoString() string {
8255	return s.String()
8256}
8257
8258// SetClusterStates sets the ClusterStates field's value.
8259func (s *ListClustersInput) SetClusterStates(v []*string) *ListClustersInput {
8260	s.ClusterStates = v
8261	return s
8262}
8263
8264// SetCreatedAfter sets the CreatedAfter field's value.
8265func (s *ListClustersInput) SetCreatedAfter(v time.Time) *ListClustersInput {
8266	s.CreatedAfter = &v
8267	return s
8268}
8269
8270// SetCreatedBefore sets the CreatedBefore field's value.
8271func (s *ListClustersInput) SetCreatedBefore(v time.Time) *ListClustersInput {
8272	s.CreatedBefore = &v
8273	return s
8274}
8275
8276// SetMarker sets the Marker field's value.
8277func (s *ListClustersInput) SetMarker(v string) *ListClustersInput {
8278	s.Marker = &v
8279	return s
8280}
8281
8282// This contains a ClusterSummaryList with the cluster details; for example,
8283// the cluster IDs, names, and status.
8284type ListClustersOutput struct {
8285	_ struct{} `type:"structure"`
8286
8287	// The list of clusters for the account based on the given filters.
8288	Clusters []*ClusterSummary `type:"list"`
8289
8290	// The pagination token that indicates the next set of results to retrieve.
8291	Marker *string `type:"string"`
8292}
8293
8294// String returns the string representation
8295func (s ListClustersOutput) String() string {
8296	return awsutil.Prettify(s)
8297}
8298
8299// GoString returns the string representation
8300func (s ListClustersOutput) GoString() string {
8301	return s.String()
8302}
8303
8304// SetClusters sets the Clusters field's value.
8305func (s *ListClustersOutput) SetClusters(v []*ClusterSummary) *ListClustersOutput {
8306	s.Clusters = v
8307	return s
8308}
8309
8310// SetMarker sets the Marker field's value.
8311func (s *ListClustersOutput) SetMarker(v string) *ListClustersOutput {
8312	s.Marker = &v
8313	return s
8314}
8315
8316type ListInstanceFleetsInput struct {
8317	_ struct{} `type:"structure"`
8318
8319	// The unique identifier of the cluster.
8320	//
8321	// ClusterId is a required field
8322	ClusterId *string `type:"string" required:"true"`
8323
8324	// The pagination token that indicates the next set of results to retrieve.
8325	Marker *string `type:"string"`
8326}
8327
8328// String returns the string representation
8329func (s ListInstanceFleetsInput) String() string {
8330	return awsutil.Prettify(s)
8331}
8332
8333// GoString returns the string representation
8334func (s ListInstanceFleetsInput) GoString() string {
8335	return s.String()
8336}
8337
8338// Validate inspects the fields of the type to determine if they are valid.
8339func (s *ListInstanceFleetsInput) Validate() error {
8340	invalidParams := request.ErrInvalidParams{Context: "ListInstanceFleetsInput"}
8341	if s.ClusterId == nil {
8342		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8343	}
8344
8345	if invalidParams.Len() > 0 {
8346		return invalidParams
8347	}
8348	return nil
8349}
8350
8351// SetClusterId sets the ClusterId field's value.
8352func (s *ListInstanceFleetsInput) SetClusterId(v string) *ListInstanceFleetsInput {
8353	s.ClusterId = &v
8354	return s
8355}
8356
8357// SetMarker sets the Marker field's value.
8358func (s *ListInstanceFleetsInput) SetMarker(v string) *ListInstanceFleetsInput {
8359	s.Marker = &v
8360	return s
8361}
8362
8363type ListInstanceFleetsOutput struct {
8364	_ struct{} `type:"structure"`
8365
8366	// The list of instance fleets for the cluster and given filters.
8367	InstanceFleets []*InstanceFleet `type:"list"`
8368
8369	// The pagination token that indicates the next set of results to retrieve.
8370	Marker *string `type:"string"`
8371}
8372
8373// String returns the string representation
8374func (s ListInstanceFleetsOutput) String() string {
8375	return awsutil.Prettify(s)
8376}
8377
8378// GoString returns the string representation
8379func (s ListInstanceFleetsOutput) GoString() string {
8380	return s.String()
8381}
8382
8383// SetInstanceFleets sets the InstanceFleets field's value.
8384func (s *ListInstanceFleetsOutput) SetInstanceFleets(v []*InstanceFleet) *ListInstanceFleetsOutput {
8385	s.InstanceFleets = v
8386	return s
8387}
8388
8389// SetMarker sets the Marker field's value.
8390func (s *ListInstanceFleetsOutput) SetMarker(v string) *ListInstanceFleetsOutput {
8391	s.Marker = &v
8392	return s
8393}
8394
8395// This input determines which instance groups to retrieve.
8396type ListInstanceGroupsInput struct {
8397	_ struct{} `type:"structure"`
8398
8399	// The identifier of the cluster for which to list the instance groups.
8400	//
8401	// ClusterId is a required field
8402	ClusterId *string `type:"string" required:"true"`
8403
8404	// The pagination token that indicates the next set of results to retrieve.
8405	Marker *string `type:"string"`
8406}
8407
8408// String returns the string representation
8409func (s ListInstanceGroupsInput) String() string {
8410	return awsutil.Prettify(s)
8411}
8412
8413// GoString returns the string representation
8414func (s ListInstanceGroupsInput) GoString() string {
8415	return s.String()
8416}
8417
8418// Validate inspects the fields of the type to determine if they are valid.
8419func (s *ListInstanceGroupsInput) Validate() error {
8420	invalidParams := request.ErrInvalidParams{Context: "ListInstanceGroupsInput"}
8421	if s.ClusterId == nil {
8422		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8423	}
8424
8425	if invalidParams.Len() > 0 {
8426		return invalidParams
8427	}
8428	return nil
8429}
8430
8431// SetClusterId sets the ClusterId field's value.
8432func (s *ListInstanceGroupsInput) SetClusterId(v string) *ListInstanceGroupsInput {
8433	s.ClusterId = &v
8434	return s
8435}
8436
8437// SetMarker sets the Marker field's value.
8438func (s *ListInstanceGroupsInput) SetMarker(v string) *ListInstanceGroupsInput {
8439	s.Marker = &v
8440	return s
8441}
8442
8443// This input determines which instance groups to retrieve.
8444type ListInstanceGroupsOutput struct {
8445	_ struct{} `type:"structure"`
8446
8447	// The list of instance groups for the cluster and given filters.
8448	InstanceGroups []*InstanceGroup `type:"list"`
8449
8450	// The pagination token that indicates the next set of results to retrieve.
8451	Marker *string `type:"string"`
8452}
8453
8454// String returns the string representation
8455func (s ListInstanceGroupsOutput) String() string {
8456	return awsutil.Prettify(s)
8457}
8458
8459// GoString returns the string representation
8460func (s ListInstanceGroupsOutput) GoString() string {
8461	return s.String()
8462}
8463
8464// SetInstanceGroups sets the InstanceGroups field's value.
8465func (s *ListInstanceGroupsOutput) SetInstanceGroups(v []*InstanceGroup) *ListInstanceGroupsOutput {
8466	s.InstanceGroups = v
8467	return s
8468}
8469
8470// SetMarker sets the Marker field's value.
8471func (s *ListInstanceGroupsOutput) SetMarker(v string) *ListInstanceGroupsOutput {
8472	s.Marker = &v
8473	return s
8474}
8475
8476// This input determines which instances to list.
8477type ListInstancesInput struct {
8478	_ struct{} `type:"structure"`
8479
8480	// The identifier of the cluster for which to list the instances.
8481	//
8482	// ClusterId is a required field
8483	ClusterId *string `type:"string" required:"true"`
8484
8485	// The unique identifier of the instance fleet.
8486	InstanceFleetId *string `type:"string"`
8487
8488	// The node type of the instance fleet. For example MASTER, CORE, or TASK.
8489	InstanceFleetType *string `type:"string" enum:"InstanceFleetType"`
8490
8491	// The identifier of the instance group for which to list the instances.
8492	InstanceGroupId *string `type:"string"`
8493
8494	// The type of instance group for which to list the instances.
8495	InstanceGroupTypes []*string `type:"list"`
8496
8497	// A list of instance states that will filter the instances returned with this
8498	// request.
8499	InstanceStates []*string `type:"list"`
8500
8501	// The pagination token that indicates the next set of results to retrieve.
8502	Marker *string `type:"string"`
8503}
8504
8505// String returns the string representation
8506func (s ListInstancesInput) String() string {
8507	return awsutil.Prettify(s)
8508}
8509
8510// GoString returns the string representation
8511func (s ListInstancesInput) GoString() string {
8512	return s.String()
8513}
8514
8515// Validate inspects the fields of the type to determine if they are valid.
8516func (s *ListInstancesInput) Validate() error {
8517	invalidParams := request.ErrInvalidParams{Context: "ListInstancesInput"}
8518	if s.ClusterId == nil {
8519		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8520	}
8521
8522	if invalidParams.Len() > 0 {
8523		return invalidParams
8524	}
8525	return nil
8526}
8527
8528// SetClusterId sets the ClusterId field's value.
8529func (s *ListInstancesInput) SetClusterId(v string) *ListInstancesInput {
8530	s.ClusterId = &v
8531	return s
8532}
8533
8534// SetInstanceFleetId sets the InstanceFleetId field's value.
8535func (s *ListInstancesInput) SetInstanceFleetId(v string) *ListInstancesInput {
8536	s.InstanceFleetId = &v
8537	return s
8538}
8539
8540// SetInstanceFleetType sets the InstanceFleetType field's value.
8541func (s *ListInstancesInput) SetInstanceFleetType(v string) *ListInstancesInput {
8542	s.InstanceFleetType = &v
8543	return s
8544}
8545
8546// SetInstanceGroupId sets the InstanceGroupId field's value.
8547func (s *ListInstancesInput) SetInstanceGroupId(v string) *ListInstancesInput {
8548	s.InstanceGroupId = &v
8549	return s
8550}
8551
8552// SetInstanceGroupTypes sets the InstanceGroupTypes field's value.
8553func (s *ListInstancesInput) SetInstanceGroupTypes(v []*string) *ListInstancesInput {
8554	s.InstanceGroupTypes = v
8555	return s
8556}
8557
8558// SetInstanceStates sets the InstanceStates field's value.
8559func (s *ListInstancesInput) SetInstanceStates(v []*string) *ListInstancesInput {
8560	s.InstanceStates = v
8561	return s
8562}
8563
8564// SetMarker sets the Marker field's value.
8565func (s *ListInstancesInput) SetMarker(v string) *ListInstancesInput {
8566	s.Marker = &v
8567	return s
8568}
8569
8570// This output contains the list of instances.
8571type ListInstancesOutput struct {
8572	_ struct{} `type:"structure"`
8573
8574	// The list of instances for the cluster and given filters.
8575	Instances []*Instance `type:"list"`
8576
8577	// The pagination token that indicates the next set of results to retrieve.
8578	Marker *string `type:"string"`
8579}
8580
8581// String returns the string representation
8582func (s ListInstancesOutput) String() string {
8583	return awsutil.Prettify(s)
8584}
8585
8586// GoString returns the string representation
8587func (s ListInstancesOutput) GoString() string {
8588	return s.String()
8589}
8590
8591// SetInstances sets the Instances field's value.
8592func (s *ListInstancesOutput) SetInstances(v []*Instance) *ListInstancesOutput {
8593	s.Instances = v
8594	return s
8595}
8596
8597// SetMarker sets the Marker field's value.
8598func (s *ListInstancesOutput) SetMarker(v string) *ListInstancesOutput {
8599	s.Marker = &v
8600	return s
8601}
8602
8603type ListSecurityConfigurationsInput struct {
8604	_ struct{} `type:"structure"`
8605
8606	// The pagination token that indicates the set of results to retrieve.
8607	Marker *string `type:"string"`
8608}
8609
8610// String returns the string representation
8611func (s ListSecurityConfigurationsInput) String() string {
8612	return awsutil.Prettify(s)
8613}
8614
8615// GoString returns the string representation
8616func (s ListSecurityConfigurationsInput) GoString() string {
8617	return s.String()
8618}
8619
8620// SetMarker sets the Marker field's value.
8621func (s *ListSecurityConfigurationsInput) SetMarker(v string) *ListSecurityConfigurationsInput {
8622	s.Marker = &v
8623	return s
8624}
8625
8626type ListSecurityConfigurationsOutput struct {
8627	_ struct{} `type:"structure"`
8628
8629	// A pagination token that indicates the next set of results to retrieve. Include
8630	// the marker in the next ListSecurityConfiguration call to retrieve the next
8631	// page of results, if required.
8632	Marker *string `type:"string"`
8633
8634	// The creation date and time, and name, of each security configuration.
8635	SecurityConfigurations []*SecurityConfigurationSummary `type:"list"`
8636}
8637
8638// String returns the string representation
8639func (s ListSecurityConfigurationsOutput) String() string {
8640	return awsutil.Prettify(s)
8641}
8642
8643// GoString returns the string representation
8644func (s ListSecurityConfigurationsOutput) GoString() string {
8645	return s.String()
8646}
8647
8648// SetMarker sets the Marker field's value.
8649func (s *ListSecurityConfigurationsOutput) SetMarker(v string) *ListSecurityConfigurationsOutput {
8650	s.Marker = &v
8651	return s
8652}
8653
8654// SetSecurityConfigurations sets the SecurityConfigurations field's value.
8655func (s *ListSecurityConfigurationsOutput) SetSecurityConfigurations(v []*SecurityConfigurationSummary) *ListSecurityConfigurationsOutput {
8656	s.SecurityConfigurations = v
8657	return s
8658}
8659
8660// This input determines which steps to list.
8661type ListStepsInput struct {
8662	_ struct{} `type:"structure"`
8663
8664	// The identifier of the cluster for which to list the steps.
8665	//
8666	// ClusterId is a required field
8667	ClusterId *string `type:"string" required:"true"`
8668
8669	// The pagination token that indicates the next set of results to retrieve.
8670	Marker *string `type:"string"`
8671
8672	// The filter to limit the step list based on the identifier of the steps. You
8673	// can specify a maximum of ten Step IDs. The character constraint applies to
8674	// the overall length of the array.
8675	StepIds []*string `type:"list"`
8676
8677	// The filter to limit the step list based on certain states.
8678	StepStates []*string `type:"list"`
8679}
8680
8681// String returns the string representation
8682func (s ListStepsInput) String() string {
8683	return awsutil.Prettify(s)
8684}
8685
8686// GoString returns the string representation
8687func (s ListStepsInput) GoString() string {
8688	return s.String()
8689}
8690
8691// Validate inspects the fields of the type to determine if they are valid.
8692func (s *ListStepsInput) Validate() error {
8693	invalidParams := request.ErrInvalidParams{Context: "ListStepsInput"}
8694	if s.ClusterId == nil {
8695		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8696	}
8697
8698	if invalidParams.Len() > 0 {
8699		return invalidParams
8700	}
8701	return nil
8702}
8703
8704// SetClusterId sets the ClusterId field's value.
8705func (s *ListStepsInput) SetClusterId(v string) *ListStepsInput {
8706	s.ClusterId = &v
8707	return s
8708}
8709
8710// SetMarker sets the Marker field's value.
8711func (s *ListStepsInput) SetMarker(v string) *ListStepsInput {
8712	s.Marker = &v
8713	return s
8714}
8715
8716// SetStepIds sets the StepIds field's value.
8717func (s *ListStepsInput) SetStepIds(v []*string) *ListStepsInput {
8718	s.StepIds = v
8719	return s
8720}
8721
8722// SetStepStates sets the StepStates field's value.
8723func (s *ListStepsInput) SetStepStates(v []*string) *ListStepsInput {
8724	s.StepStates = v
8725	return s
8726}
8727
8728// This output contains the list of steps returned in reverse order. This means
8729// that the last step is the first element in the list.
8730type ListStepsOutput struct {
8731	_ struct{} `type:"structure"`
8732
8733	// The pagination token that indicates the next set of results to retrieve.
8734	Marker *string `type:"string"`
8735
8736	// The filtered list of steps for the cluster.
8737	Steps []*StepSummary `type:"list"`
8738}
8739
8740// String returns the string representation
8741func (s ListStepsOutput) String() string {
8742	return awsutil.Prettify(s)
8743}
8744
8745// GoString returns the string representation
8746func (s ListStepsOutput) GoString() string {
8747	return s.String()
8748}
8749
8750// SetMarker sets the Marker field's value.
8751func (s *ListStepsOutput) SetMarker(v string) *ListStepsOutput {
8752	s.Marker = &v
8753	return s
8754}
8755
8756// SetSteps sets the Steps field's value.
8757func (s *ListStepsOutput) SetSteps(v []*StepSummary) *ListStepsOutput {
8758	s.Steps = v
8759	return s
8760}
8761
8762// A CloudWatch dimension, which is specified using a Key (known as a Name in
8763// CloudWatch), Value pair. By default, Amazon EMR uses one dimension whose
8764// Key is JobFlowID and Value is a variable representing the cluster ID, which
8765// is ${emr.clusterId}. This enables the rule to bootstrap when the cluster
8766// ID becomes available.
8767type MetricDimension struct {
8768	_ struct{} `type:"structure"`
8769
8770	// The dimension name.
8771	Key *string `type:"string"`
8772
8773	// The dimension value.
8774	Value *string `type:"string"`
8775}
8776
8777// String returns the string representation
8778func (s MetricDimension) String() string {
8779	return awsutil.Prettify(s)
8780}
8781
8782// GoString returns the string representation
8783func (s MetricDimension) GoString() string {
8784	return s.String()
8785}
8786
8787// SetKey sets the Key field's value.
8788func (s *MetricDimension) SetKey(v string) *MetricDimension {
8789	s.Key = &v
8790	return s
8791}
8792
8793// SetValue sets the Value field's value.
8794func (s *MetricDimension) SetValue(v string) *MetricDimension {
8795	s.Value = &v
8796	return s
8797}
8798
8799type ModifyClusterInput struct {
8800	_ struct{} `type:"structure"`
8801
8802	// The unique identifier of the cluster.
8803	//
8804	// ClusterId is a required field
8805	ClusterId *string `type:"string" required:"true"`
8806
8807	// The number of steps that can be executed concurrently. You can specify a
8808	// maximum of 256 steps.
8809	StepConcurrencyLevel *int64 `type:"integer"`
8810}
8811
8812// String returns the string representation
8813func (s ModifyClusterInput) String() string {
8814	return awsutil.Prettify(s)
8815}
8816
8817// GoString returns the string representation
8818func (s ModifyClusterInput) GoString() string {
8819	return s.String()
8820}
8821
8822// Validate inspects the fields of the type to determine if they are valid.
8823func (s *ModifyClusterInput) Validate() error {
8824	invalidParams := request.ErrInvalidParams{Context: "ModifyClusterInput"}
8825	if s.ClusterId == nil {
8826		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8827	}
8828
8829	if invalidParams.Len() > 0 {
8830		return invalidParams
8831	}
8832	return nil
8833}
8834
8835// SetClusterId sets the ClusterId field's value.
8836func (s *ModifyClusterInput) SetClusterId(v string) *ModifyClusterInput {
8837	s.ClusterId = &v
8838	return s
8839}
8840
8841// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
8842func (s *ModifyClusterInput) SetStepConcurrencyLevel(v int64) *ModifyClusterInput {
8843	s.StepConcurrencyLevel = &v
8844	return s
8845}
8846
8847type ModifyClusterOutput struct {
8848	_ struct{} `type:"structure"`
8849
8850	// The number of steps that can be executed concurrently.
8851	StepConcurrencyLevel *int64 `type:"integer"`
8852}
8853
8854// String returns the string representation
8855func (s ModifyClusterOutput) String() string {
8856	return awsutil.Prettify(s)
8857}
8858
8859// GoString returns the string representation
8860func (s ModifyClusterOutput) GoString() string {
8861	return s.String()
8862}
8863
8864// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
8865func (s *ModifyClusterOutput) SetStepConcurrencyLevel(v int64) *ModifyClusterOutput {
8866	s.StepConcurrencyLevel = &v
8867	return s
8868}
8869
8870type ModifyInstanceFleetInput struct {
8871	_ struct{} `type:"structure"`
8872
8873	// The unique identifier of the cluster.
8874	//
8875	// ClusterId is a required field
8876	ClusterId *string `type:"string" required:"true"`
8877
8878	// The unique identifier of the instance fleet.
8879	//
8880	// InstanceFleet is a required field
8881	InstanceFleet *InstanceFleetModifyConfig `type:"structure" required:"true"`
8882}
8883
8884// String returns the string representation
8885func (s ModifyInstanceFleetInput) String() string {
8886	return awsutil.Prettify(s)
8887}
8888
8889// GoString returns the string representation
8890func (s ModifyInstanceFleetInput) GoString() string {
8891	return s.String()
8892}
8893
8894// Validate inspects the fields of the type to determine if they are valid.
8895func (s *ModifyInstanceFleetInput) Validate() error {
8896	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceFleetInput"}
8897	if s.ClusterId == nil {
8898		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
8899	}
8900	if s.InstanceFleet == nil {
8901		invalidParams.Add(request.NewErrParamRequired("InstanceFleet"))
8902	}
8903	if s.InstanceFleet != nil {
8904		if err := s.InstanceFleet.Validate(); err != nil {
8905			invalidParams.AddNested("InstanceFleet", err.(request.ErrInvalidParams))
8906		}
8907	}
8908
8909	if invalidParams.Len() > 0 {
8910		return invalidParams
8911	}
8912	return nil
8913}
8914
8915// SetClusterId sets the ClusterId field's value.
8916func (s *ModifyInstanceFleetInput) SetClusterId(v string) *ModifyInstanceFleetInput {
8917	s.ClusterId = &v
8918	return s
8919}
8920
8921// SetInstanceFleet sets the InstanceFleet field's value.
8922func (s *ModifyInstanceFleetInput) SetInstanceFleet(v *InstanceFleetModifyConfig) *ModifyInstanceFleetInput {
8923	s.InstanceFleet = v
8924	return s
8925}
8926
8927type ModifyInstanceFleetOutput struct {
8928	_ struct{} `type:"structure"`
8929}
8930
8931// String returns the string representation
8932func (s ModifyInstanceFleetOutput) String() string {
8933	return awsutil.Prettify(s)
8934}
8935
8936// GoString returns the string representation
8937func (s ModifyInstanceFleetOutput) GoString() string {
8938	return s.String()
8939}
8940
8941// Change the size of some instance groups.
8942type ModifyInstanceGroupsInput struct {
8943	_ struct{} `type:"structure"`
8944
8945	// The ID of the cluster to which the instance group belongs.
8946	ClusterId *string `type:"string"`
8947
8948	// Instance groups to change.
8949	InstanceGroups []*InstanceGroupModifyConfig `type:"list"`
8950}
8951
8952// String returns the string representation
8953func (s ModifyInstanceGroupsInput) String() string {
8954	return awsutil.Prettify(s)
8955}
8956
8957// GoString returns the string representation
8958func (s ModifyInstanceGroupsInput) GoString() string {
8959	return s.String()
8960}
8961
8962// Validate inspects the fields of the type to determine if they are valid.
8963func (s *ModifyInstanceGroupsInput) Validate() error {
8964	invalidParams := request.ErrInvalidParams{Context: "ModifyInstanceGroupsInput"}
8965	if s.InstanceGroups != nil {
8966		for i, v := range s.InstanceGroups {
8967			if v == nil {
8968				continue
8969			}
8970			if err := v.Validate(); err != nil {
8971				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InstanceGroups", i), err.(request.ErrInvalidParams))
8972			}
8973		}
8974	}
8975
8976	if invalidParams.Len() > 0 {
8977		return invalidParams
8978	}
8979	return nil
8980}
8981
8982// SetClusterId sets the ClusterId field's value.
8983func (s *ModifyInstanceGroupsInput) SetClusterId(v string) *ModifyInstanceGroupsInput {
8984	s.ClusterId = &v
8985	return s
8986}
8987
8988// SetInstanceGroups sets the InstanceGroups field's value.
8989func (s *ModifyInstanceGroupsInput) SetInstanceGroups(v []*InstanceGroupModifyConfig) *ModifyInstanceGroupsInput {
8990	s.InstanceGroups = v
8991	return s
8992}
8993
8994type ModifyInstanceGroupsOutput struct {
8995	_ struct{} `type:"structure"`
8996}
8997
8998// String returns the string representation
8999func (s ModifyInstanceGroupsOutput) String() string {
9000	return awsutil.Prettify(s)
9001}
9002
9003// GoString returns the string representation
9004func (s ModifyInstanceGroupsOutput) GoString() string {
9005	return s.String()
9006}
9007
9008// The Amazon EC2 Availability Zone configuration of the cluster (job flow).
9009type PlacementType struct {
9010	_ struct{} `type:"structure"`
9011
9012	// The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used
9013	// for uniform instance groups, while AvailabilityZones (plural) is used for
9014	// instance fleets.
9015	AvailabilityZone *string `type:"string"`
9016
9017	// When multiple Availability Zones are specified, Amazon EMR evaluates them
9018	// and launches instances in the optimal Availability Zone. AvailabilityZones
9019	// is used for instance fleets, while AvailabilityZone (singular) is used for
9020	// uniform instance groups.
9021	//
9022	// The instance fleet configuration is available only in Amazon EMR versions
9023	// 4.8.0 and later, excluding 5.0.x versions.
9024	AvailabilityZones []*string `type:"list"`
9025}
9026
9027// String returns the string representation
9028func (s PlacementType) String() string {
9029	return awsutil.Prettify(s)
9030}
9031
9032// GoString returns the string representation
9033func (s PlacementType) GoString() string {
9034	return s.String()
9035}
9036
9037// SetAvailabilityZone sets the AvailabilityZone field's value.
9038func (s *PlacementType) SetAvailabilityZone(v string) *PlacementType {
9039	s.AvailabilityZone = &v
9040	return s
9041}
9042
9043// SetAvailabilityZones sets the AvailabilityZones field's value.
9044func (s *PlacementType) SetAvailabilityZones(v []*string) *PlacementType {
9045	s.AvailabilityZones = v
9046	return s
9047}
9048
9049// A list of port ranges that are permitted to allow inbound traffic from all
9050// public IP addresses. To specify a single port, use the same value for MinRange
9051// and MaxRange.
9052type PortRange struct {
9053	_ struct{} `type:"structure"`
9054
9055	// The smallest port number in a specified range of port numbers.
9056	MaxRange *int64 `type:"integer"`
9057
9058	// The smallest port number in a specified range of port numbers.
9059	//
9060	// MinRange is a required field
9061	MinRange *int64 `type:"integer" required:"true"`
9062}
9063
9064// String returns the string representation
9065func (s PortRange) String() string {
9066	return awsutil.Prettify(s)
9067}
9068
9069// GoString returns the string representation
9070func (s PortRange) GoString() string {
9071	return s.String()
9072}
9073
9074// Validate inspects the fields of the type to determine if they are valid.
9075func (s *PortRange) Validate() error {
9076	invalidParams := request.ErrInvalidParams{Context: "PortRange"}
9077	if s.MinRange == nil {
9078		invalidParams.Add(request.NewErrParamRequired("MinRange"))
9079	}
9080
9081	if invalidParams.Len() > 0 {
9082		return invalidParams
9083	}
9084	return nil
9085}
9086
9087// SetMaxRange sets the MaxRange field's value.
9088func (s *PortRange) SetMaxRange(v int64) *PortRange {
9089	s.MaxRange = &v
9090	return s
9091}
9092
9093// SetMinRange sets the MinRange field's value.
9094func (s *PortRange) SetMinRange(v int64) *PortRange {
9095	s.MinRange = &v
9096	return s
9097}
9098
9099type PutAutoScalingPolicyInput struct {
9100	_ struct{} `type:"structure"`
9101
9102	// Specifies the definition of the automatic scaling policy.
9103	//
9104	// AutoScalingPolicy is a required field
9105	AutoScalingPolicy *AutoScalingPolicy `type:"structure" required:"true"`
9106
9107	// Specifies the ID of a cluster. The instance group to which the automatic
9108	// scaling policy is applied is within this cluster.
9109	//
9110	// ClusterId is a required field
9111	ClusterId *string `type:"string" required:"true"`
9112
9113	// Specifies the ID of the instance group to which the automatic scaling policy
9114	// is applied.
9115	//
9116	// InstanceGroupId is a required field
9117	InstanceGroupId *string `type:"string" required:"true"`
9118}
9119
9120// String returns the string representation
9121func (s PutAutoScalingPolicyInput) String() string {
9122	return awsutil.Prettify(s)
9123}
9124
9125// GoString returns the string representation
9126func (s PutAutoScalingPolicyInput) GoString() string {
9127	return s.String()
9128}
9129
9130// Validate inspects the fields of the type to determine if they are valid.
9131func (s *PutAutoScalingPolicyInput) Validate() error {
9132	invalidParams := request.ErrInvalidParams{Context: "PutAutoScalingPolicyInput"}
9133	if s.AutoScalingPolicy == nil {
9134		invalidParams.Add(request.NewErrParamRequired("AutoScalingPolicy"))
9135	}
9136	if s.ClusterId == nil {
9137		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9138	}
9139	if s.InstanceGroupId == nil {
9140		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
9141	}
9142	if s.AutoScalingPolicy != nil {
9143		if err := s.AutoScalingPolicy.Validate(); err != nil {
9144			invalidParams.AddNested("AutoScalingPolicy", err.(request.ErrInvalidParams))
9145		}
9146	}
9147
9148	if invalidParams.Len() > 0 {
9149		return invalidParams
9150	}
9151	return nil
9152}
9153
9154// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
9155func (s *PutAutoScalingPolicyInput) SetAutoScalingPolicy(v *AutoScalingPolicy) *PutAutoScalingPolicyInput {
9156	s.AutoScalingPolicy = v
9157	return s
9158}
9159
9160// SetClusterId sets the ClusterId field's value.
9161func (s *PutAutoScalingPolicyInput) SetClusterId(v string) *PutAutoScalingPolicyInput {
9162	s.ClusterId = &v
9163	return s
9164}
9165
9166// SetInstanceGroupId sets the InstanceGroupId field's value.
9167func (s *PutAutoScalingPolicyInput) SetInstanceGroupId(v string) *PutAutoScalingPolicyInput {
9168	s.InstanceGroupId = &v
9169	return s
9170}
9171
9172type PutAutoScalingPolicyOutput struct {
9173	_ struct{} `type:"structure"`
9174
9175	// The automatic scaling policy definition.
9176	AutoScalingPolicy *AutoScalingPolicyDescription `type:"structure"`
9177
9178	// The Amazon Resource Name of the cluster.
9179	ClusterArn *string `min:"20" type:"string"`
9180
9181	// Specifies the ID of a cluster. The instance group to which the automatic
9182	// scaling policy is applied is within this cluster.
9183	ClusterId *string `type:"string"`
9184
9185	// Specifies the ID of the instance group to which the scaling policy is applied.
9186	InstanceGroupId *string `type:"string"`
9187}
9188
9189// String returns the string representation
9190func (s PutAutoScalingPolicyOutput) String() string {
9191	return awsutil.Prettify(s)
9192}
9193
9194// GoString returns the string representation
9195func (s PutAutoScalingPolicyOutput) GoString() string {
9196	return s.String()
9197}
9198
9199// SetAutoScalingPolicy sets the AutoScalingPolicy field's value.
9200func (s *PutAutoScalingPolicyOutput) SetAutoScalingPolicy(v *AutoScalingPolicyDescription) *PutAutoScalingPolicyOutput {
9201	s.AutoScalingPolicy = v
9202	return s
9203}
9204
9205// SetClusterArn sets the ClusterArn field's value.
9206func (s *PutAutoScalingPolicyOutput) SetClusterArn(v string) *PutAutoScalingPolicyOutput {
9207	s.ClusterArn = &v
9208	return s
9209}
9210
9211// SetClusterId sets the ClusterId field's value.
9212func (s *PutAutoScalingPolicyOutput) SetClusterId(v string) *PutAutoScalingPolicyOutput {
9213	s.ClusterId = &v
9214	return s
9215}
9216
9217// SetInstanceGroupId sets the InstanceGroupId field's value.
9218func (s *PutAutoScalingPolicyOutput) SetInstanceGroupId(v string) *PutAutoScalingPolicyOutput {
9219	s.InstanceGroupId = &v
9220	return s
9221}
9222
9223type PutBlockPublicAccessConfigurationInput struct {
9224	_ struct{} `type:"structure"`
9225
9226	// A configuration for Amazon EMR block public access. The configuration applies
9227	// to all clusters created in your account for the current Region. The configuration
9228	// specifies whether block public access is enabled. If block public access
9229	// is enabled, security groups associated with the cluster cannot have rules
9230	// that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port
9231	// is specified as an exception using PermittedPublicSecurityGroupRuleRanges
9232	// in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception,
9233	// and public access is allowed on this port. You can change this by updating
9234	// BlockPublicSecurityGroupRules to remove the exception.
9235	//
9236	// BlockPublicAccessConfiguration is a required field
9237	BlockPublicAccessConfiguration *BlockPublicAccessConfiguration `type:"structure" required:"true"`
9238}
9239
9240// String returns the string representation
9241func (s PutBlockPublicAccessConfigurationInput) String() string {
9242	return awsutil.Prettify(s)
9243}
9244
9245// GoString returns the string representation
9246func (s PutBlockPublicAccessConfigurationInput) GoString() string {
9247	return s.String()
9248}
9249
9250// Validate inspects the fields of the type to determine if they are valid.
9251func (s *PutBlockPublicAccessConfigurationInput) Validate() error {
9252	invalidParams := request.ErrInvalidParams{Context: "PutBlockPublicAccessConfigurationInput"}
9253	if s.BlockPublicAccessConfiguration == nil {
9254		invalidParams.Add(request.NewErrParamRequired("BlockPublicAccessConfiguration"))
9255	}
9256	if s.BlockPublicAccessConfiguration != nil {
9257		if err := s.BlockPublicAccessConfiguration.Validate(); err != nil {
9258			invalidParams.AddNested("BlockPublicAccessConfiguration", err.(request.ErrInvalidParams))
9259		}
9260	}
9261
9262	if invalidParams.Len() > 0 {
9263		return invalidParams
9264	}
9265	return nil
9266}
9267
9268// SetBlockPublicAccessConfiguration sets the BlockPublicAccessConfiguration field's value.
9269func (s *PutBlockPublicAccessConfigurationInput) SetBlockPublicAccessConfiguration(v *BlockPublicAccessConfiguration) *PutBlockPublicAccessConfigurationInput {
9270	s.BlockPublicAccessConfiguration = v
9271	return s
9272}
9273
9274type PutBlockPublicAccessConfigurationOutput struct {
9275	_ struct{} `type:"structure"`
9276}
9277
9278// String returns the string representation
9279func (s PutBlockPublicAccessConfigurationOutput) String() string {
9280	return awsutil.Prettify(s)
9281}
9282
9283// GoString returns the string representation
9284func (s PutBlockPublicAccessConfigurationOutput) GoString() string {
9285	return s.String()
9286}
9287
9288type RemoveAutoScalingPolicyInput struct {
9289	_ struct{} `type:"structure"`
9290
9291	// Specifies the ID of a cluster. The instance group to which the automatic
9292	// scaling policy is applied is within this cluster.
9293	//
9294	// ClusterId is a required field
9295	ClusterId *string `type:"string" required:"true"`
9296
9297	// Specifies the ID of the instance group to which the scaling policy is applied.
9298	//
9299	// InstanceGroupId is a required field
9300	InstanceGroupId *string `type:"string" required:"true"`
9301}
9302
9303// String returns the string representation
9304func (s RemoveAutoScalingPolicyInput) String() string {
9305	return awsutil.Prettify(s)
9306}
9307
9308// GoString returns the string representation
9309func (s RemoveAutoScalingPolicyInput) GoString() string {
9310	return s.String()
9311}
9312
9313// Validate inspects the fields of the type to determine if they are valid.
9314func (s *RemoveAutoScalingPolicyInput) Validate() error {
9315	invalidParams := request.ErrInvalidParams{Context: "RemoveAutoScalingPolicyInput"}
9316	if s.ClusterId == nil {
9317		invalidParams.Add(request.NewErrParamRequired("ClusterId"))
9318	}
9319	if s.InstanceGroupId == nil {
9320		invalidParams.Add(request.NewErrParamRequired("InstanceGroupId"))
9321	}
9322
9323	if invalidParams.Len() > 0 {
9324		return invalidParams
9325	}
9326	return nil
9327}
9328
9329// SetClusterId sets the ClusterId field's value.
9330func (s *RemoveAutoScalingPolicyInput) SetClusterId(v string) *RemoveAutoScalingPolicyInput {
9331	s.ClusterId = &v
9332	return s
9333}
9334
9335// SetInstanceGroupId sets the InstanceGroupId field's value.
9336func (s *RemoveAutoScalingPolicyInput) SetInstanceGroupId(v string) *RemoveAutoScalingPolicyInput {
9337	s.InstanceGroupId = &v
9338	return s
9339}
9340
9341type RemoveAutoScalingPolicyOutput struct {
9342	_ struct{} `type:"structure"`
9343}
9344
9345// String returns the string representation
9346func (s RemoveAutoScalingPolicyOutput) String() string {
9347	return awsutil.Prettify(s)
9348}
9349
9350// GoString returns the string representation
9351func (s RemoveAutoScalingPolicyOutput) GoString() string {
9352	return s.String()
9353}
9354
9355// This input identifies a cluster and a list of tags to remove.
9356type RemoveTagsInput struct {
9357	_ struct{} `type:"structure"`
9358
9359	// The Amazon EMR resource identifier from which tags will be removed. This
9360	// value must be a cluster identifier.
9361	//
9362	// ResourceId is a required field
9363	ResourceId *string `type:"string" required:"true"`
9364
9365	// A list of tag keys to remove from a resource.
9366	//
9367	// TagKeys is a required field
9368	TagKeys []*string `type:"list" required:"true"`
9369}
9370
9371// String returns the string representation
9372func (s RemoveTagsInput) String() string {
9373	return awsutil.Prettify(s)
9374}
9375
9376// GoString returns the string representation
9377func (s RemoveTagsInput) GoString() string {
9378	return s.String()
9379}
9380
9381// Validate inspects the fields of the type to determine if they are valid.
9382func (s *RemoveTagsInput) Validate() error {
9383	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsInput"}
9384	if s.ResourceId == nil {
9385		invalidParams.Add(request.NewErrParamRequired("ResourceId"))
9386	}
9387	if s.TagKeys == nil {
9388		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
9389	}
9390
9391	if invalidParams.Len() > 0 {
9392		return invalidParams
9393	}
9394	return nil
9395}
9396
9397// SetResourceId sets the ResourceId field's value.
9398func (s *RemoveTagsInput) SetResourceId(v string) *RemoveTagsInput {
9399	s.ResourceId = &v
9400	return s
9401}
9402
9403// SetTagKeys sets the TagKeys field's value.
9404func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput {
9405	s.TagKeys = v
9406	return s
9407}
9408
9409// This output indicates the result of removing tags from a resource.
9410type RemoveTagsOutput struct {
9411	_ struct{} `type:"structure"`
9412}
9413
9414// String returns the string representation
9415func (s RemoveTagsOutput) String() string {
9416	return awsutil.Prettify(s)
9417}
9418
9419// GoString returns the string representation
9420func (s RemoveTagsOutput) GoString() string {
9421	return s.String()
9422}
9423
9424// Input to the RunJobFlow operation.
9425type RunJobFlowInput struct {
9426	_ struct{} `type:"structure"`
9427
9428	// A JSON string for selecting additional features.
9429	AdditionalInfo *string `type:"string"`
9430
9431	// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases
9432	// 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID.
9433	AmiVersion *string `type:"string"`
9434
9435	// Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of
9436	// applications for Amazon EMR to install and configure when launching the cluster.
9437	// For a list of applications available for each Amazon EMR release version,
9438	// see the Amazon EMR Release Guide (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/).
9439	Applications []*Application `type:"list"`
9440
9441	// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole.
9442	// The IAM role provides permissions that the automatic scaling feature requires
9443	// to launch and terminate EC2 instances in an instance group.
9444	AutoScalingRole *string `type:"string"`
9445
9446	// A list of bootstrap actions to run before Hadoop starts on the cluster nodes.
9447	BootstrapActions []*BootstrapActionConfig `type:"list"`
9448
9449	// For Amazon EMR releases 4.0 and later. The list of configurations supplied
9450	// for the EMR cluster you are creating.
9451	Configurations []*Configuration `type:"list"`
9452
9453	// Available only in Amazon EMR version 5.7.0 and later. The ID of a custom
9454	// Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when
9455	// it launches cluster EC2 instances. For more information about custom AMIs
9456	// in Amazon EMR, see Using a Custom AMI (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html)
9457	// in the Amazon EMR Management Guide. If omitted, the cluster uses the base
9458	// Linux AMI for the ReleaseLabel specified. For Amazon EMR versions 2.x and
9459	// 3.x, use AmiVersion instead.
9460	//
9461	// For information about creating a custom AMI, see Creating an Amazon EBS-Backed
9462	// Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html)
9463	// in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information
9464	// about finding an AMI ID, see Finding a Linux AMI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html).
9465	CustomAmiId *string `type:"string"`
9466
9467	// The size, in GiB, of the EBS root device volume of the Linux AMI that is
9468	// used for each EC2 instance. Available in Amazon EMR version 4.x and later.
9469	EbsRootVolumeSize *int64 `type:"integer"`
9470
9471	// A specification of the number and type of Amazon EC2 instances.
9472	//
9473	// Instances is a required field
9474	Instances *JobFlowInstancesConfig `type:"structure" required:"true"`
9475
9476	// Also called instance profile and EC2 role. An IAM role for an EMR cluster.
9477	// The EC2 instances of the cluster assume this role. The default role is EMR_EC2_DefaultRole.
9478	// In order to use the default role, you must have already created it using
9479	// the CLI or console.
9480	JobFlowRole *string `type:"string"`
9481
9482	// Attributes for Kerberos configuration when Kerberos authentication is enabled
9483	// using a security configuration. For more information see Use Kerberos Authentication
9484	// (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html)
9485	// in the EMR Management Guide.
9486	KerberosAttributes *KerberosAttributes `type:"structure"`
9487
9488	// The location in Amazon S3 to write the log files of the job flow. If a value
9489	// is not provided, logs are not created.
9490	LogUri *string `type:"string"`
9491
9492	// The name of the job flow.
9493	//
9494	// Name is a required field
9495	Name *string `type:"string" required:"true"`
9496
9497	//
9498	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
9499	// use Applications.
9500	//
9501	// A list of strings that indicates third-party software to use with the job
9502	// flow that accepts a user argument list. EMR accepts and forwards the argument
9503	// list to the corresponding installation script as bootstrap action arguments.
9504	// For more information, see "Launch a Job Flow on the MapR Distribution for
9505	// Hadoop" in the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
9506	// Supported values are:
9507	//
9508	//    * "mapr-m3" - launch the cluster using MapR M3 Edition.
9509	//
9510	//    * "mapr-m5" - launch the cluster using MapR M5 Edition.
9511	//
9512	//    * "mapr" with the user arguments specifying "--edition,m3" or "--edition,m5"
9513	//    - launch the job flow using MapR M3 or M5 Edition respectively.
9514	//
9515	//    * "mapr-m7" - launch the cluster using MapR M7 Edition.
9516	//
9517	//    * "hunk" - launch the cluster with the Hunk Big Data Analtics Platform.
9518	//
9519	//    * "hue"- launch the cluster with Hue installed.
9520	//
9521	//    * "spark" - launch the cluster with Apache Spark installed.
9522	//
9523	//    * "ganglia" - launch the cluster with the Ganglia Monitoring System installed.
9524	NewSupportedProducts []*SupportedProductConfig `type:"list"`
9525
9526	// The Amazon EMR release label, which determines the version of open-source
9527	// application packages installed on the cluster. Release labels are in the
9528	// form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0.
9529	// For more information about Amazon EMR release versions and included application
9530	// versions and features, see https://docs.aws.amazon.com/emr/latest/ReleaseGuide/
9531	// (https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label
9532	// applies only to Amazon EMR releases version 4.0 and later. Earlier versions
9533	// use AmiVersion.
9534	ReleaseLabel *string `type:"string"`
9535
9536	// Applies only when CustomAmiID is used. Specifies which updates from the Amazon
9537	// Linux AMI package repositories to apply automatically when the instance boots
9538	// using the AMI. If omitted, the default is SECURITY, which indicates that
9539	// only security updates are applied. If NONE is specified, no updates are applied,
9540	// and all updates must be applied manually.
9541	RepoUpgradeOnBoot *string `type:"string" enum:"RepoUpgradeOnBoot"`
9542
9543	// Specifies the way that individual Amazon EC2 instances terminate when an
9544	// automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR
9545	// indicates that Amazon EMR terminates nodes at the instance-hour boundary,
9546	// regardless of when the request to terminate the instance was submitted. This
9547	// option is only available with Amazon EMR 5.1.0 and later and is the default
9548	// for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates
9549	// that Amazon EMR blacklists and drains tasks from nodes before terminating
9550	// the Amazon EC2 instances, regardless of the instance-hour boundary. With
9551	// either behavior, Amazon EMR removes the least active nodes first and blocks
9552	// instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION
9553	// available only in Amazon EMR version 4.1.0 and later, and is the default
9554	// for versions of Amazon EMR earlier than 5.1.0.
9555	ScaleDownBehavior *string `type:"string" enum:"ScaleDownBehavior"`
9556
9557	// The name of a security configuration to apply to the cluster.
9558	SecurityConfiguration *string `type:"string"`
9559
9560	// The IAM role that will be assumed by the Amazon EMR service to access AWS
9561	// resources on your behalf.
9562	ServiceRole *string `type:"string"`
9563
9564	// Specifies the number of steps that can be executed concurrently. The default
9565	// value is 1. The maximum value is 256.
9566	StepConcurrencyLevel *int64 `type:"integer"`
9567
9568	// A list of steps to run.
9569	Steps []*StepConfig `type:"list"`
9570
9571	//
9572	// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later,
9573	// use Applications.
9574	//
9575	// A list of strings that indicates third-party software to use. For more information,
9576	// see the Amazon EMR Developer Guide (https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf).
9577	// Currently supported values are:
9578	//
9579	//    * "mapr-m3" - launch the job flow using MapR M3 Edition.
9580	//
9581	//    * "mapr-m5" - launch the job flow using MapR M5 Edition.
9582	SupportedProducts []*string `type:"list"`
9583
9584	// A list of tags to associate with a cluster and propagate to Amazon EC2 instances.
9585	Tags []*Tag `type:"list"`
9586
9587	// A value of true indicates that all IAM users in the AWS account can perform
9588	// cluster actions if they have the proper IAM policy permissions. This is the
9589	// default. A value of false indicates that only the IAM user who created the
9590	// cluster can perform actions.
9591	VisibleToAllUsers *bool `type:"boolean"`
9592}
9593
9594// String returns the string representation
9595func (s RunJobFlowInput) String() string {
9596	return awsutil.Prettify(s)
9597}
9598
9599// GoString returns the string representation
9600func (s RunJobFlowInput) GoString() string {
9601	return s.String()
9602}
9603
9604// Validate inspects the fields of the type to determine if they are valid.
9605func (s *RunJobFlowInput) Validate() error {
9606	invalidParams := request.ErrInvalidParams{Context: "RunJobFlowInput"}
9607	if s.Instances == nil {
9608		invalidParams.Add(request.NewErrParamRequired("Instances"))
9609	}
9610	if s.Name == nil {
9611		invalidParams.Add(request.NewErrParamRequired("Name"))
9612	}
9613	if s.BootstrapActions != nil {
9614		for i, v := range s.BootstrapActions {
9615			if v == nil {
9616				continue
9617			}
9618			if err := v.Validate(); err != nil {
9619				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "BootstrapActions", i), err.(request.ErrInvalidParams))
9620			}
9621		}
9622	}
9623	if s.Instances != nil {
9624		if err := s.Instances.Validate(); err != nil {
9625			invalidParams.AddNested("Instances", err.(request.ErrInvalidParams))
9626		}
9627	}
9628	if s.KerberosAttributes != nil {
9629		if err := s.KerberosAttributes.Validate(); err != nil {
9630			invalidParams.AddNested("KerberosAttributes", err.(request.ErrInvalidParams))
9631		}
9632	}
9633	if s.Steps != nil {
9634		for i, v := range s.Steps {
9635			if v == nil {
9636				continue
9637			}
9638			if err := v.Validate(); err != nil {
9639				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Steps", i), err.(request.ErrInvalidParams))
9640			}
9641		}
9642	}
9643
9644	if invalidParams.Len() > 0 {
9645		return invalidParams
9646	}
9647	return nil
9648}
9649
9650// SetAdditionalInfo sets the AdditionalInfo field's value.
9651func (s *RunJobFlowInput) SetAdditionalInfo(v string) *RunJobFlowInput {
9652	s.AdditionalInfo = &v
9653	return s
9654}
9655
9656// SetAmiVersion sets the AmiVersion field's value.
9657func (s *RunJobFlowInput) SetAmiVersion(v string) *RunJobFlowInput {
9658	s.AmiVersion = &v
9659	return s
9660}
9661
9662// SetApplications sets the Applications field's value.
9663func (s *RunJobFlowInput) SetApplications(v []*Application) *RunJobFlowInput {
9664	s.Applications = v
9665	return s
9666}
9667
9668// SetAutoScalingRole sets the AutoScalingRole field's value.
9669func (s *RunJobFlowInput) SetAutoScalingRole(v string) *RunJobFlowInput {
9670	s.AutoScalingRole = &v
9671	return s
9672}
9673
9674// SetBootstrapActions sets the BootstrapActions field's value.
9675func (s *RunJobFlowInput) SetBootstrapActions(v []*BootstrapActionConfig) *RunJobFlowInput {
9676	s.BootstrapActions = v
9677	return s
9678}
9679
9680// SetConfigurations sets the Configurations field's value.
9681func (s *RunJobFlowInput) SetConfigurations(v []*Configuration) *RunJobFlowInput {
9682	s.Configurations = v
9683	return s
9684}
9685
9686// SetCustomAmiId sets the CustomAmiId field's value.
9687func (s *RunJobFlowInput) SetCustomAmiId(v string) *RunJobFlowInput {
9688	s.CustomAmiId = &v
9689	return s
9690}
9691
9692// SetEbsRootVolumeSize sets the EbsRootVolumeSize field's value.
9693func (s *RunJobFlowInput) SetEbsRootVolumeSize(v int64) *RunJobFlowInput {
9694	s.EbsRootVolumeSize = &v
9695	return s
9696}
9697
9698// SetInstances sets the Instances field's value.
9699func (s *RunJobFlowInput) SetInstances(v *JobFlowInstancesConfig) *RunJobFlowInput {
9700	s.Instances = v
9701	return s
9702}
9703
9704// SetJobFlowRole sets the JobFlowRole field's value.
9705func (s *RunJobFlowInput) SetJobFlowRole(v string) *RunJobFlowInput {
9706	s.JobFlowRole = &v
9707	return s
9708}
9709
9710// SetKerberosAttributes sets the KerberosAttributes field's value.
9711func (s *RunJobFlowInput) SetKerberosAttributes(v *KerberosAttributes) *RunJobFlowInput {
9712	s.KerberosAttributes = v
9713	return s
9714}
9715
9716// SetLogUri sets the LogUri field's value.
9717func (s *RunJobFlowInput) SetLogUri(v string) *RunJobFlowInput {
9718	s.LogUri = &v
9719	return s
9720}
9721
9722// SetName sets the Name field's value.
9723func (s *RunJobFlowInput) SetName(v string) *RunJobFlowInput {
9724	s.Name = &v
9725	return s
9726}
9727
9728// SetNewSupportedProducts sets the NewSupportedProducts field's value.
9729func (s *RunJobFlowInput) SetNewSupportedProducts(v []*SupportedProductConfig) *RunJobFlowInput {
9730	s.NewSupportedProducts = v
9731	return s
9732}
9733
9734// SetReleaseLabel sets the ReleaseLabel field's value.
9735func (s *RunJobFlowInput) SetReleaseLabel(v string) *RunJobFlowInput {
9736	s.ReleaseLabel = &v
9737	return s
9738}
9739
9740// SetRepoUpgradeOnBoot sets the RepoUpgradeOnBoot field's value.
9741func (s *RunJobFlowInput) SetRepoUpgradeOnBoot(v string) *RunJobFlowInput {
9742	s.RepoUpgradeOnBoot = &v
9743	return s
9744}
9745
9746// SetScaleDownBehavior sets the ScaleDownBehavior field's value.
9747func (s *RunJobFlowInput) SetScaleDownBehavior(v string) *RunJobFlowInput {
9748	s.ScaleDownBehavior = &v
9749	return s
9750}
9751
9752// SetSecurityConfiguration sets the SecurityConfiguration field's value.
9753func (s *RunJobFlowInput) SetSecurityConfiguration(v string) *RunJobFlowInput {
9754	s.SecurityConfiguration = &v
9755	return s
9756}
9757
9758// SetServiceRole sets the ServiceRole field's value.
9759func (s *RunJobFlowInput) SetServiceRole(v string) *RunJobFlowInput {
9760	s.ServiceRole = &v
9761	return s
9762}
9763
9764// SetStepConcurrencyLevel sets the StepConcurrencyLevel field's value.
9765func (s *RunJobFlowInput) SetStepConcurrencyLevel(v int64) *RunJobFlowInput {
9766	s.StepConcurrencyLevel = &v
9767	return s
9768}
9769
9770// SetSteps sets the Steps field's value.
9771func (s *RunJobFlowInput) SetSteps(v []*StepConfig) *RunJobFlowInput {
9772	s.Steps = v
9773	return s
9774}
9775
9776// SetSupportedProducts sets the SupportedProducts field's value.
9777func (s *RunJobFlowInput) SetSupportedProducts(v []*string) *RunJobFlowInput {
9778	s.SupportedProducts = v
9779	return s
9780}
9781
9782// SetTags sets the Tags field's value.
9783func (s *RunJobFlowInput) SetTags(v []*Tag) *RunJobFlowInput {
9784	s.Tags = v
9785	return s
9786}
9787
9788// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
9789func (s *RunJobFlowInput) SetVisibleToAllUsers(v bool) *RunJobFlowInput {
9790	s.VisibleToAllUsers = &v
9791	return s
9792}
9793
9794// The result of the RunJobFlow operation.
9795type RunJobFlowOutput struct {
9796	_ struct{} `type:"structure"`
9797
9798	// The Amazon Resource Name of the cluster.
9799	ClusterArn *string `min:"20" type:"string"`
9800
9801	// An unique identifier for the job flow.
9802	JobFlowId *string `type:"string"`
9803}
9804
9805// String returns the string representation
9806func (s RunJobFlowOutput) String() string {
9807	return awsutil.Prettify(s)
9808}
9809
9810// GoString returns the string representation
9811func (s RunJobFlowOutput) GoString() string {
9812	return s.String()
9813}
9814
9815// SetClusterArn sets the ClusterArn field's value.
9816func (s *RunJobFlowOutput) SetClusterArn(v string) *RunJobFlowOutput {
9817	s.ClusterArn = &v
9818	return s
9819}
9820
9821// SetJobFlowId sets the JobFlowId field's value.
9822func (s *RunJobFlowOutput) SetJobFlowId(v string) *RunJobFlowOutput {
9823	s.JobFlowId = &v
9824	return s
9825}
9826
9827// The type of adjustment the automatic scaling activity makes when triggered,
9828// and the periodicity of the adjustment.
9829type ScalingAction struct {
9830	_ struct{} `type:"structure"`
9831
9832	// Not available for instance groups. Instance groups use the market type specified
9833	// for the group.
9834	Market *string `type:"string" enum:"MarketType"`
9835
9836	// The type of adjustment the automatic scaling activity makes when triggered,
9837	// and the periodicity of the adjustment.
9838	//
9839	// SimpleScalingPolicyConfiguration is a required field
9840	SimpleScalingPolicyConfiguration *SimpleScalingPolicyConfiguration `type:"structure" required:"true"`
9841}
9842
9843// String returns the string representation
9844func (s ScalingAction) String() string {
9845	return awsutil.Prettify(s)
9846}
9847
9848// GoString returns the string representation
9849func (s ScalingAction) GoString() string {
9850	return s.String()
9851}
9852
9853// Validate inspects the fields of the type to determine if they are valid.
9854func (s *ScalingAction) Validate() error {
9855	invalidParams := request.ErrInvalidParams{Context: "ScalingAction"}
9856	if s.SimpleScalingPolicyConfiguration == nil {
9857		invalidParams.Add(request.NewErrParamRequired("SimpleScalingPolicyConfiguration"))
9858	}
9859	if s.SimpleScalingPolicyConfiguration != nil {
9860		if err := s.SimpleScalingPolicyConfiguration.Validate(); err != nil {
9861			invalidParams.AddNested("SimpleScalingPolicyConfiguration", err.(request.ErrInvalidParams))
9862		}
9863	}
9864
9865	if invalidParams.Len() > 0 {
9866		return invalidParams
9867	}
9868	return nil
9869}
9870
9871// SetMarket sets the Market field's value.
9872func (s *ScalingAction) SetMarket(v string) *ScalingAction {
9873	s.Market = &v
9874	return s
9875}
9876
9877// SetSimpleScalingPolicyConfiguration sets the SimpleScalingPolicyConfiguration field's value.
9878func (s *ScalingAction) SetSimpleScalingPolicyConfiguration(v *SimpleScalingPolicyConfiguration) *ScalingAction {
9879	s.SimpleScalingPolicyConfiguration = v
9880	return s
9881}
9882
9883// The upper and lower EC2 instance limits for an automatic scaling policy.
9884// Automatic scaling activities triggered by automatic scaling rules will not
9885// cause an instance group to grow above or below these limits.
9886type ScalingConstraints struct {
9887	_ struct{} `type:"structure"`
9888
9889	// The upper boundary of EC2 instances in an instance group beyond which scaling
9890	// activities are not allowed to grow. Scale-out activities will not add instances
9891	// beyond this boundary.
9892	//
9893	// MaxCapacity is a required field
9894	MaxCapacity *int64 `type:"integer" required:"true"`
9895
9896	// The lower boundary of EC2 instances in an instance group below which scaling
9897	// activities are not allowed to shrink. Scale-in activities will not terminate
9898	// instances below this boundary.
9899	//
9900	// MinCapacity is a required field
9901	MinCapacity *int64 `type:"integer" required:"true"`
9902}
9903
9904// String returns the string representation
9905func (s ScalingConstraints) String() string {
9906	return awsutil.Prettify(s)
9907}
9908
9909// GoString returns the string representation
9910func (s ScalingConstraints) GoString() string {
9911	return s.String()
9912}
9913
9914// Validate inspects the fields of the type to determine if they are valid.
9915func (s *ScalingConstraints) Validate() error {
9916	invalidParams := request.ErrInvalidParams{Context: "ScalingConstraints"}
9917	if s.MaxCapacity == nil {
9918		invalidParams.Add(request.NewErrParamRequired("MaxCapacity"))
9919	}
9920	if s.MinCapacity == nil {
9921		invalidParams.Add(request.NewErrParamRequired("MinCapacity"))
9922	}
9923
9924	if invalidParams.Len() > 0 {
9925		return invalidParams
9926	}
9927	return nil
9928}
9929
9930// SetMaxCapacity sets the MaxCapacity field's value.
9931func (s *ScalingConstraints) SetMaxCapacity(v int64) *ScalingConstraints {
9932	s.MaxCapacity = &v
9933	return s
9934}
9935
9936// SetMinCapacity sets the MinCapacity field's value.
9937func (s *ScalingConstraints) SetMinCapacity(v int64) *ScalingConstraints {
9938	s.MinCapacity = &v
9939	return s
9940}
9941
9942// A scale-in or scale-out rule that defines scaling activity, including the
9943// CloudWatch metric alarm that triggers activity, how EC2 instances are added
9944// or removed, and the periodicity of adjustments. The automatic scaling policy
9945// for an instance group can comprise one or more automatic scaling rules.
9946type ScalingRule struct {
9947	_ struct{} `type:"structure"`
9948
9949	// The conditions that trigger an automatic scaling activity.
9950	//
9951	// Action is a required field
9952	Action *ScalingAction `type:"structure" required:"true"`
9953
9954	// A friendly, more verbose description of the automatic scaling rule.
9955	Description *string `type:"string"`
9956
9957	// The name used to identify an automatic scaling rule. Rule names must be unique
9958	// within a scaling policy.
9959	//
9960	// Name is a required field
9961	Name *string `type:"string" required:"true"`
9962
9963	// The CloudWatch alarm definition that determines when automatic scaling activity
9964	// is triggered.
9965	//
9966	// Trigger is a required field
9967	Trigger *ScalingTrigger `type:"structure" required:"true"`
9968}
9969
9970// String returns the string representation
9971func (s ScalingRule) String() string {
9972	return awsutil.Prettify(s)
9973}
9974
9975// GoString returns the string representation
9976func (s ScalingRule) GoString() string {
9977	return s.String()
9978}
9979
9980// Validate inspects the fields of the type to determine if they are valid.
9981func (s *ScalingRule) Validate() error {
9982	invalidParams := request.ErrInvalidParams{Context: "ScalingRule"}
9983	if s.Action == nil {
9984		invalidParams.Add(request.NewErrParamRequired("Action"))
9985	}
9986	if s.Name == nil {
9987		invalidParams.Add(request.NewErrParamRequired("Name"))
9988	}
9989	if s.Trigger == nil {
9990		invalidParams.Add(request.NewErrParamRequired("Trigger"))
9991	}
9992	if s.Action != nil {
9993		if err := s.Action.Validate(); err != nil {
9994			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
9995		}
9996	}
9997	if s.Trigger != nil {
9998		if err := s.Trigger.Validate(); err != nil {
9999			invalidParams.AddNested("Trigger", err.(request.ErrInvalidParams))
10000		}
10001	}
10002
10003	if invalidParams.Len() > 0 {
10004		return invalidParams
10005	}
10006	return nil
10007}
10008
10009// SetAction sets the Action field's value.
10010func (s *ScalingRule) SetAction(v *ScalingAction) *ScalingRule {
10011	s.Action = v
10012	return s
10013}
10014
10015// SetDescription sets the Description field's value.
10016func (s *ScalingRule) SetDescription(v string) *ScalingRule {
10017	s.Description = &v
10018	return s
10019}
10020
10021// SetName sets the Name field's value.
10022func (s *ScalingRule) SetName(v string) *ScalingRule {
10023	s.Name = &v
10024	return s
10025}
10026
10027// SetTrigger sets the Trigger field's value.
10028func (s *ScalingRule) SetTrigger(v *ScalingTrigger) *ScalingRule {
10029	s.Trigger = v
10030	return s
10031}
10032
10033// The conditions that trigger an automatic scaling activity.
10034type ScalingTrigger struct {
10035	_ struct{} `type:"structure"`
10036
10037	// The definition of a CloudWatch metric alarm. When the defined alarm conditions
10038	// are met along with other trigger parameters, scaling activity begins.
10039	//
10040	// CloudWatchAlarmDefinition is a required field
10041	CloudWatchAlarmDefinition *CloudWatchAlarmDefinition `type:"structure" required:"true"`
10042}
10043
10044// String returns the string representation
10045func (s ScalingTrigger) String() string {
10046	return awsutil.Prettify(s)
10047}
10048
10049// GoString returns the string representation
10050func (s ScalingTrigger) GoString() string {
10051	return s.String()
10052}
10053
10054// Validate inspects the fields of the type to determine if they are valid.
10055func (s *ScalingTrigger) Validate() error {
10056	invalidParams := request.ErrInvalidParams{Context: "ScalingTrigger"}
10057	if s.CloudWatchAlarmDefinition == nil {
10058		invalidParams.Add(request.NewErrParamRequired("CloudWatchAlarmDefinition"))
10059	}
10060	if s.CloudWatchAlarmDefinition != nil {
10061		if err := s.CloudWatchAlarmDefinition.Validate(); err != nil {
10062			invalidParams.AddNested("CloudWatchAlarmDefinition", err.(request.ErrInvalidParams))
10063		}
10064	}
10065
10066	if invalidParams.Len() > 0 {
10067		return invalidParams
10068	}
10069	return nil
10070}
10071
10072// SetCloudWatchAlarmDefinition sets the CloudWatchAlarmDefinition field's value.
10073func (s *ScalingTrigger) SetCloudWatchAlarmDefinition(v *CloudWatchAlarmDefinition) *ScalingTrigger {
10074	s.CloudWatchAlarmDefinition = v
10075	return s
10076}
10077
10078// Configuration of the script to run during a bootstrap action.
10079type ScriptBootstrapActionConfig struct {
10080	_ struct{} `type:"structure"`
10081
10082	// A list of command line arguments to pass to the bootstrap action script.
10083	Args []*string `type:"list"`
10084
10085	// Location of the script to run during a bootstrap action. Can be either a
10086	// location in Amazon S3 or on a local file system.
10087	//
10088	// Path is a required field
10089	Path *string `type:"string" required:"true"`
10090}
10091
10092// String returns the string representation
10093func (s ScriptBootstrapActionConfig) String() string {
10094	return awsutil.Prettify(s)
10095}
10096
10097// GoString returns the string representation
10098func (s ScriptBootstrapActionConfig) GoString() string {
10099	return s.String()
10100}
10101
10102// Validate inspects the fields of the type to determine if they are valid.
10103func (s *ScriptBootstrapActionConfig) Validate() error {
10104	invalidParams := request.ErrInvalidParams{Context: "ScriptBootstrapActionConfig"}
10105	if s.Path == nil {
10106		invalidParams.Add(request.NewErrParamRequired("Path"))
10107	}
10108
10109	if invalidParams.Len() > 0 {
10110		return invalidParams
10111	}
10112	return nil
10113}
10114
10115// SetArgs sets the Args field's value.
10116func (s *ScriptBootstrapActionConfig) SetArgs(v []*string) *ScriptBootstrapActionConfig {
10117	s.Args = v
10118	return s
10119}
10120
10121// SetPath sets the Path field's value.
10122func (s *ScriptBootstrapActionConfig) SetPath(v string) *ScriptBootstrapActionConfig {
10123	s.Path = &v
10124	return s
10125}
10126
10127// The creation date and time, and name, of a security configuration.
10128type SecurityConfigurationSummary struct {
10129	_ struct{} `type:"structure"`
10130
10131	// The date and time the security configuration was created.
10132	CreationDateTime *time.Time `type:"timestamp"`
10133
10134	// The name of the security configuration.
10135	Name *string `type:"string"`
10136}
10137
10138// String returns the string representation
10139func (s SecurityConfigurationSummary) String() string {
10140	return awsutil.Prettify(s)
10141}
10142
10143// GoString returns the string representation
10144func (s SecurityConfigurationSummary) GoString() string {
10145	return s.String()
10146}
10147
10148// SetCreationDateTime sets the CreationDateTime field's value.
10149func (s *SecurityConfigurationSummary) SetCreationDateTime(v time.Time) *SecurityConfigurationSummary {
10150	s.CreationDateTime = &v
10151	return s
10152}
10153
10154// SetName sets the Name field's value.
10155func (s *SecurityConfigurationSummary) SetName(v string) *SecurityConfigurationSummary {
10156	s.Name = &v
10157	return s
10158}
10159
10160// The input argument to the TerminationProtection operation.
10161type SetTerminationProtectionInput struct {
10162	_ struct{} `type:"structure"`
10163
10164	// A list of strings that uniquely identify the clusters to protect. This identifier
10165	// is returned by RunJobFlow and can also be obtained from DescribeJobFlows .
10166	//
10167	// JobFlowIds is a required field
10168	JobFlowIds []*string `type:"list" required:"true"`
10169
10170	// A Boolean that indicates whether to protect the cluster and prevent the Amazon
10171	// EC2 instances in the cluster from shutting down due to API calls, user intervention,
10172	// or job-flow error.
10173	//
10174	// TerminationProtected is a required field
10175	TerminationProtected *bool `type:"boolean" required:"true"`
10176}
10177
10178// String returns the string representation
10179func (s SetTerminationProtectionInput) String() string {
10180	return awsutil.Prettify(s)
10181}
10182
10183// GoString returns the string representation
10184func (s SetTerminationProtectionInput) GoString() string {
10185	return s.String()
10186}
10187
10188// Validate inspects the fields of the type to determine if they are valid.
10189func (s *SetTerminationProtectionInput) Validate() error {
10190	invalidParams := request.ErrInvalidParams{Context: "SetTerminationProtectionInput"}
10191	if s.JobFlowIds == nil {
10192		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
10193	}
10194	if s.TerminationProtected == nil {
10195		invalidParams.Add(request.NewErrParamRequired("TerminationProtected"))
10196	}
10197
10198	if invalidParams.Len() > 0 {
10199		return invalidParams
10200	}
10201	return nil
10202}
10203
10204// SetJobFlowIds sets the JobFlowIds field's value.
10205func (s *SetTerminationProtectionInput) SetJobFlowIds(v []*string) *SetTerminationProtectionInput {
10206	s.JobFlowIds = v
10207	return s
10208}
10209
10210// SetTerminationProtected sets the TerminationProtected field's value.
10211func (s *SetTerminationProtectionInput) SetTerminationProtected(v bool) *SetTerminationProtectionInput {
10212	s.TerminationProtected = &v
10213	return s
10214}
10215
10216type SetTerminationProtectionOutput struct {
10217	_ struct{} `type:"structure"`
10218}
10219
10220// String returns the string representation
10221func (s SetTerminationProtectionOutput) String() string {
10222	return awsutil.Prettify(s)
10223}
10224
10225// GoString returns the string representation
10226func (s SetTerminationProtectionOutput) GoString() string {
10227	return s.String()
10228}
10229
10230// The input to the SetVisibleToAllUsers action.
10231type SetVisibleToAllUsersInput struct {
10232	_ struct{} `type:"structure"`
10233
10234	// The unique identifier of the job flow (cluster).
10235	//
10236	// JobFlowIds is a required field
10237	JobFlowIds []*string `type:"list" required:"true"`
10238
10239	// A value of true indicates that all IAM users in the AWS account can perform
10240	// cluster actions if they have the proper IAM policy permissions. This is the
10241	// default. A value of false indicates that only the IAM user who created the
10242	// cluster can perform actions.
10243	//
10244	// VisibleToAllUsers is a required field
10245	VisibleToAllUsers *bool `type:"boolean" required:"true"`
10246}
10247
10248// String returns the string representation
10249func (s SetVisibleToAllUsersInput) String() string {
10250	return awsutil.Prettify(s)
10251}
10252
10253// GoString returns the string representation
10254func (s SetVisibleToAllUsersInput) GoString() string {
10255	return s.String()
10256}
10257
10258// Validate inspects the fields of the type to determine if they are valid.
10259func (s *SetVisibleToAllUsersInput) Validate() error {
10260	invalidParams := request.ErrInvalidParams{Context: "SetVisibleToAllUsersInput"}
10261	if s.JobFlowIds == nil {
10262		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
10263	}
10264	if s.VisibleToAllUsers == nil {
10265		invalidParams.Add(request.NewErrParamRequired("VisibleToAllUsers"))
10266	}
10267
10268	if invalidParams.Len() > 0 {
10269		return invalidParams
10270	}
10271	return nil
10272}
10273
10274// SetJobFlowIds sets the JobFlowIds field's value.
10275func (s *SetVisibleToAllUsersInput) SetJobFlowIds(v []*string) *SetVisibleToAllUsersInput {
10276	s.JobFlowIds = v
10277	return s
10278}
10279
10280// SetVisibleToAllUsers sets the VisibleToAllUsers field's value.
10281func (s *SetVisibleToAllUsersInput) SetVisibleToAllUsers(v bool) *SetVisibleToAllUsersInput {
10282	s.VisibleToAllUsers = &v
10283	return s
10284}
10285
10286type SetVisibleToAllUsersOutput struct {
10287	_ struct{} `type:"structure"`
10288}
10289
10290// String returns the string representation
10291func (s SetVisibleToAllUsersOutput) String() string {
10292	return awsutil.Prettify(s)
10293}
10294
10295// GoString returns the string representation
10296func (s SetVisibleToAllUsersOutput) GoString() string {
10297	return s.String()
10298}
10299
10300// Policy for customizing shrink operations. Allows configuration of decommissioning
10301// timeout and targeted instance shrinking.
10302type ShrinkPolicy struct {
10303	_ struct{} `type:"structure"`
10304
10305	// The desired timeout for decommissioning an instance. Overrides the default
10306	// YARN decommissioning timeout.
10307	DecommissionTimeout *int64 `type:"integer"`
10308
10309	// Custom policy for requesting termination protection or termination of specific
10310	// instances when shrinking an instance group.
10311	InstanceResizePolicy *InstanceResizePolicy `type:"structure"`
10312}
10313
10314// String returns the string representation
10315func (s ShrinkPolicy) String() string {
10316	return awsutil.Prettify(s)
10317}
10318
10319// GoString returns the string representation
10320func (s ShrinkPolicy) GoString() string {
10321	return s.String()
10322}
10323
10324// SetDecommissionTimeout sets the DecommissionTimeout field's value.
10325func (s *ShrinkPolicy) SetDecommissionTimeout(v int64) *ShrinkPolicy {
10326	s.DecommissionTimeout = &v
10327	return s
10328}
10329
10330// SetInstanceResizePolicy sets the InstanceResizePolicy field's value.
10331func (s *ShrinkPolicy) SetInstanceResizePolicy(v *InstanceResizePolicy) *ShrinkPolicy {
10332	s.InstanceResizePolicy = v
10333	return s
10334}
10335
10336// An automatic scaling configuration, which describes how the policy adds or
10337// removes instances, the cooldown period, and the number of EC2 instances that
10338// will be added each time the CloudWatch metric alarm condition is satisfied.
10339type SimpleScalingPolicyConfiguration struct {
10340	_ struct{} `type:"structure"`
10341
10342	// The way in which EC2 instances are added (if ScalingAdjustment is a positive
10343	// number) or terminated (if ScalingAdjustment is a negative number) each time
10344	// the scaling activity is triggered. CHANGE_IN_CAPACITY is the default. CHANGE_IN_CAPACITY
10345	// indicates that the EC2 instance count increments or decrements by ScalingAdjustment,
10346	// which should be expressed as an integer. PERCENT_CHANGE_IN_CAPACITY indicates
10347	// the instance count increments or decrements by the percentage specified by
10348	// ScalingAdjustment, which should be expressed as an integer. For example,
10349	// 20 indicates an increase in 20% increments of cluster capacity. EXACT_CAPACITY
10350	// indicates the scaling activity results in an instance group with the number
10351	// of EC2 instances specified by ScalingAdjustment, which should be expressed
10352	// as a positive integer.
10353	AdjustmentType *string `type:"string" enum:"AdjustmentType"`
10354
10355	// The amount of time, in seconds, after a scaling activity completes before
10356	// any further trigger-related scaling activities can start. The default value
10357	// is 0.
10358	CoolDown *int64 `type:"integer"`
10359
10360	// The amount by which to scale in or scale out, based on the specified AdjustmentType.
10361	// A positive value adds to the instance group's EC2 instance count while a
10362	// negative number removes instances. If AdjustmentType is set to EXACT_CAPACITY,
10363	// the number should only be a positive integer. If AdjustmentType is set to
10364	// PERCENT_CHANGE_IN_CAPACITY, the value should express the percentage as an
10365	// integer. For example, -20 indicates a decrease in 20% increments of cluster
10366	// capacity.
10367	//
10368	// ScalingAdjustment is a required field
10369	ScalingAdjustment *int64 `type:"integer" required:"true"`
10370}
10371
10372// String returns the string representation
10373func (s SimpleScalingPolicyConfiguration) String() string {
10374	return awsutil.Prettify(s)
10375}
10376
10377// GoString returns the string representation
10378func (s SimpleScalingPolicyConfiguration) GoString() string {
10379	return s.String()
10380}
10381
10382// Validate inspects the fields of the type to determine if they are valid.
10383func (s *SimpleScalingPolicyConfiguration) Validate() error {
10384	invalidParams := request.ErrInvalidParams{Context: "SimpleScalingPolicyConfiguration"}
10385	if s.ScalingAdjustment == nil {
10386		invalidParams.Add(request.NewErrParamRequired("ScalingAdjustment"))
10387	}
10388
10389	if invalidParams.Len() > 0 {
10390		return invalidParams
10391	}
10392	return nil
10393}
10394
10395// SetAdjustmentType sets the AdjustmentType field's value.
10396func (s *SimpleScalingPolicyConfiguration) SetAdjustmentType(v string) *SimpleScalingPolicyConfiguration {
10397	s.AdjustmentType = &v
10398	return s
10399}
10400
10401// SetCoolDown sets the CoolDown field's value.
10402func (s *SimpleScalingPolicyConfiguration) SetCoolDown(v int64) *SimpleScalingPolicyConfiguration {
10403	s.CoolDown = &v
10404	return s
10405}
10406
10407// SetScalingAdjustment sets the ScalingAdjustment field's value.
10408func (s *SimpleScalingPolicyConfiguration) SetScalingAdjustment(v int64) *SimpleScalingPolicyConfiguration {
10409	s.ScalingAdjustment = &v
10410	return s
10411}
10412
10413// The launch specification for Spot instances in the instance fleet, which
10414// determines the defined duration and provisioning timeout behavior.
10415//
10416// The instance fleet configuration is available only in Amazon EMR versions
10417// 4.8.0 and later, excluding 5.0.x versions.
10418type SpotProvisioningSpecification struct {
10419	_ struct{} `type:"structure"`
10420
10421	// The defined duration for Spot instances (also known as Spot blocks) in minutes.
10422	// When specified, the Spot instance does not terminate before the defined duration
10423	// expires, and defined duration pricing for Spot instances applies. Valid values
10424	// are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as
10425	// a Spot instance receives its instance ID. At the end of the duration, Amazon
10426	// EC2 marks the Spot instance for termination and provides a Spot instance
10427	// termination notice, which gives the instance a two-minute warning before
10428	// it terminates.
10429	BlockDurationMinutes *int64 `type:"integer"`
10430
10431	// The action to take when TargetSpotCapacity has not been fulfilled when the
10432	// TimeoutDurationMinutes has expired; that is, when all Spot instances could
10433	// not be provisioned within the Spot provisioning timeout. Valid values are
10434	// TERMINATE_CLUSTER and SWITCH_TO_ON_DEMAND. SWITCH_TO_ON_DEMAND specifies
10435	// that if no Spot instances are available, On-Demand Instances should be provisioned
10436	// to fulfill any remaining Spot capacity.
10437	//
10438	// TimeoutAction is a required field
10439	TimeoutAction *string `type:"string" required:"true" enum:"SpotProvisioningTimeoutAction"`
10440
10441	// The spot provisioning timeout period in minutes. If Spot instances are not
10442	// provisioned within this time period, the TimeOutAction is taken. Minimum
10443	// value is 5 and maximum value is 1440. The timeout applies only during initial
10444	// provisioning, when the cluster is first created.
10445	//
10446	// TimeoutDurationMinutes is a required field
10447	TimeoutDurationMinutes *int64 `type:"integer" required:"true"`
10448}
10449
10450// String returns the string representation
10451func (s SpotProvisioningSpecification) String() string {
10452	return awsutil.Prettify(s)
10453}
10454
10455// GoString returns the string representation
10456func (s SpotProvisioningSpecification) GoString() string {
10457	return s.String()
10458}
10459
10460// Validate inspects the fields of the type to determine if they are valid.
10461func (s *SpotProvisioningSpecification) Validate() error {
10462	invalidParams := request.ErrInvalidParams{Context: "SpotProvisioningSpecification"}
10463	if s.TimeoutAction == nil {
10464		invalidParams.Add(request.NewErrParamRequired("TimeoutAction"))
10465	}
10466	if s.TimeoutDurationMinutes == nil {
10467		invalidParams.Add(request.NewErrParamRequired("TimeoutDurationMinutes"))
10468	}
10469
10470	if invalidParams.Len() > 0 {
10471		return invalidParams
10472	}
10473	return nil
10474}
10475
10476// SetBlockDurationMinutes sets the BlockDurationMinutes field's value.
10477func (s *SpotProvisioningSpecification) SetBlockDurationMinutes(v int64) *SpotProvisioningSpecification {
10478	s.BlockDurationMinutes = &v
10479	return s
10480}
10481
10482// SetTimeoutAction sets the TimeoutAction field's value.
10483func (s *SpotProvisioningSpecification) SetTimeoutAction(v string) *SpotProvisioningSpecification {
10484	s.TimeoutAction = &v
10485	return s
10486}
10487
10488// SetTimeoutDurationMinutes sets the TimeoutDurationMinutes field's value.
10489func (s *SpotProvisioningSpecification) SetTimeoutDurationMinutes(v int64) *SpotProvisioningSpecification {
10490	s.TimeoutDurationMinutes = &v
10491	return s
10492}
10493
10494// This represents a step in a cluster.
10495type Step struct {
10496	_ struct{} `type:"structure"`
10497
10498	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10499	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
10500	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10501	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10502
10503	// The Hadoop job configuration of the cluster step.
10504	Config *HadoopStepConfig `type:"structure"`
10505
10506	// The identifier of the cluster step.
10507	Id *string `type:"string"`
10508
10509	// The name of the cluster step.
10510	Name *string `type:"string"`
10511
10512	// The current execution status details of the cluster step.
10513	Status *StepStatus `type:"structure"`
10514}
10515
10516// String returns the string representation
10517func (s Step) String() string {
10518	return awsutil.Prettify(s)
10519}
10520
10521// GoString returns the string representation
10522func (s Step) GoString() string {
10523	return s.String()
10524}
10525
10526// SetActionOnFailure sets the ActionOnFailure field's value.
10527func (s *Step) SetActionOnFailure(v string) *Step {
10528	s.ActionOnFailure = &v
10529	return s
10530}
10531
10532// SetConfig sets the Config field's value.
10533func (s *Step) SetConfig(v *HadoopStepConfig) *Step {
10534	s.Config = v
10535	return s
10536}
10537
10538// SetId sets the Id field's value.
10539func (s *Step) SetId(v string) *Step {
10540	s.Id = &v
10541	return s
10542}
10543
10544// SetName sets the Name field's value.
10545func (s *Step) SetName(v string) *Step {
10546	s.Name = &v
10547	return s
10548}
10549
10550// SetStatus sets the Status field's value.
10551func (s *Step) SetStatus(v *StepStatus) *Step {
10552	s.Status = v
10553	return s
10554}
10555
10556// Specification of a cluster (job flow) step.
10557type StepConfig struct {
10558	_ struct{} `type:"structure"`
10559
10560	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10561	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is provided for backward
10562	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10563	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10564
10565	// The JAR file used for the step.
10566	//
10567	// HadoopJarStep is a required field
10568	HadoopJarStep *HadoopJarStepConfig `type:"structure" required:"true"`
10569
10570	// The name of the step.
10571	//
10572	// Name is a required field
10573	Name *string `type:"string" required:"true"`
10574}
10575
10576// String returns the string representation
10577func (s StepConfig) String() string {
10578	return awsutil.Prettify(s)
10579}
10580
10581// GoString returns the string representation
10582func (s StepConfig) GoString() string {
10583	return s.String()
10584}
10585
10586// Validate inspects the fields of the type to determine if they are valid.
10587func (s *StepConfig) Validate() error {
10588	invalidParams := request.ErrInvalidParams{Context: "StepConfig"}
10589	if s.HadoopJarStep == nil {
10590		invalidParams.Add(request.NewErrParamRequired("HadoopJarStep"))
10591	}
10592	if s.Name == nil {
10593		invalidParams.Add(request.NewErrParamRequired("Name"))
10594	}
10595	if s.HadoopJarStep != nil {
10596		if err := s.HadoopJarStep.Validate(); err != nil {
10597			invalidParams.AddNested("HadoopJarStep", err.(request.ErrInvalidParams))
10598		}
10599	}
10600
10601	if invalidParams.Len() > 0 {
10602		return invalidParams
10603	}
10604	return nil
10605}
10606
10607// SetActionOnFailure sets the ActionOnFailure field's value.
10608func (s *StepConfig) SetActionOnFailure(v string) *StepConfig {
10609	s.ActionOnFailure = &v
10610	return s
10611}
10612
10613// SetHadoopJarStep sets the HadoopJarStep field's value.
10614func (s *StepConfig) SetHadoopJarStep(v *HadoopJarStepConfig) *StepConfig {
10615	s.HadoopJarStep = v
10616	return s
10617}
10618
10619// SetName sets the Name field's value.
10620func (s *StepConfig) SetName(v string) *StepConfig {
10621	s.Name = &v
10622	return s
10623}
10624
10625// Combines the execution state and configuration of a step.
10626type StepDetail struct {
10627	_ struct{} `type:"structure"`
10628
10629	// The description of the step status.
10630	//
10631	// ExecutionStatusDetail is a required field
10632	ExecutionStatusDetail *StepExecutionStatusDetail `type:"structure" required:"true"`
10633
10634	// The step configuration.
10635	//
10636	// StepConfig is a required field
10637	StepConfig *StepConfig `type:"structure" required:"true"`
10638}
10639
10640// String returns the string representation
10641func (s StepDetail) String() string {
10642	return awsutil.Prettify(s)
10643}
10644
10645// GoString returns the string representation
10646func (s StepDetail) GoString() string {
10647	return s.String()
10648}
10649
10650// SetExecutionStatusDetail sets the ExecutionStatusDetail field's value.
10651func (s *StepDetail) SetExecutionStatusDetail(v *StepExecutionStatusDetail) *StepDetail {
10652	s.ExecutionStatusDetail = v
10653	return s
10654}
10655
10656// SetStepConfig sets the StepConfig field's value.
10657func (s *StepDetail) SetStepConfig(v *StepConfig) *StepDetail {
10658	s.StepConfig = v
10659	return s
10660}
10661
10662// The execution state of a step.
10663type StepExecutionStatusDetail struct {
10664	_ struct{} `type:"structure"`
10665
10666	// The creation date and time of the step.
10667	//
10668	// CreationDateTime is a required field
10669	CreationDateTime *time.Time `type:"timestamp" required:"true"`
10670
10671	// The completion date and time of the step.
10672	EndDateTime *time.Time `type:"timestamp"`
10673
10674	// A description of the step's current state.
10675	LastStateChangeReason *string `type:"string"`
10676
10677	// The start date and time of the step.
10678	StartDateTime *time.Time `type:"timestamp"`
10679
10680	// The state of the step.
10681	//
10682	// State is a required field
10683	State *string `type:"string" required:"true" enum:"StepExecutionState"`
10684}
10685
10686// String returns the string representation
10687func (s StepExecutionStatusDetail) String() string {
10688	return awsutil.Prettify(s)
10689}
10690
10691// GoString returns the string representation
10692func (s StepExecutionStatusDetail) GoString() string {
10693	return s.String()
10694}
10695
10696// SetCreationDateTime sets the CreationDateTime field's value.
10697func (s *StepExecutionStatusDetail) SetCreationDateTime(v time.Time) *StepExecutionStatusDetail {
10698	s.CreationDateTime = &v
10699	return s
10700}
10701
10702// SetEndDateTime sets the EndDateTime field's value.
10703func (s *StepExecutionStatusDetail) SetEndDateTime(v time.Time) *StepExecutionStatusDetail {
10704	s.EndDateTime = &v
10705	return s
10706}
10707
10708// SetLastStateChangeReason sets the LastStateChangeReason field's value.
10709func (s *StepExecutionStatusDetail) SetLastStateChangeReason(v string) *StepExecutionStatusDetail {
10710	s.LastStateChangeReason = &v
10711	return s
10712}
10713
10714// SetStartDateTime sets the StartDateTime field's value.
10715func (s *StepExecutionStatusDetail) SetStartDateTime(v time.Time) *StepExecutionStatusDetail {
10716	s.StartDateTime = &v
10717	return s
10718}
10719
10720// SetState sets the State field's value.
10721func (s *StepExecutionStatusDetail) SetState(v string) *StepExecutionStatusDetail {
10722	s.State = &v
10723	return s
10724}
10725
10726// The details of the step state change reason.
10727type StepStateChangeReason struct {
10728	_ struct{} `type:"structure"`
10729
10730	// The programmable code for the state change reason. Note: Currently, the service
10731	// provides no code for the state change.
10732	Code *string `type:"string" enum:"StepStateChangeReasonCode"`
10733
10734	// The descriptive message for the state change reason.
10735	Message *string `type:"string"`
10736}
10737
10738// String returns the string representation
10739func (s StepStateChangeReason) String() string {
10740	return awsutil.Prettify(s)
10741}
10742
10743// GoString returns the string representation
10744func (s StepStateChangeReason) GoString() string {
10745	return s.String()
10746}
10747
10748// SetCode sets the Code field's value.
10749func (s *StepStateChangeReason) SetCode(v string) *StepStateChangeReason {
10750	s.Code = &v
10751	return s
10752}
10753
10754// SetMessage sets the Message field's value.
10755func (s *StepStateChangeReason) SetMessage(v string) *StepStateChangeReason {
10756	s.Message = &v
10757	return s
10758}
10759
10760// The execution status details of the cluster step.
10761type StepStatus struct {
10762	_ struct{} `type:"structure"`
10763
10764	// The details for the step failure including reason, message, and log file
10765	// path where the root cause was identified.
10766	FailureDetails *FailureDetails `type:"structure"`
10767
10768	// The execution state of the cluster step.
10769	State *string `type:"string" enum:"StepState"`
10770
10771	// The reason for the step execution status change.
10772	StateChangeReason *StepStateChangeReason `type:"structure"`
10773
10774	// The timeline of the cluster step status over time.
10775	Timeline *StepTimeline `type:"structure"`
10776}
10777
10778// String returns the string representation
10779func (s StepStatus) String() string {
10780	return awsutil.Prettify(s)
10781}
10782
10783// GoString returns the string representation
10784func (s StepStatus) GoString() string {
10785	return s.String()
10786}
10787
10788// SetFailureDetails sets the FailureDetails field's value.
10789func (s *StepStatus) SetFailureDetails(v *FailureDetails) *StepStatus {
10790	s.FailureDetails = v
10791	return s
10792}
10793
10794// SetState sets the State field's value.
10795func (s *StepStatus) SetState(v string) *StepStatus {
10796	s.State = &v
10797	return s
10798}
10799
10800// SetStateChangeReason sets the StateChangeReason field's value.
10801func (s *StepStatus) SetStateChangeReason(v *StepStateChangeReason) *StepStatus {
10802	s.StateChangeReason = v
10803	return s
10804}
10805
10806// SetTimeline sets the Timeline field's value.
10807func (s *StepStatus) SetTimeline(v *StepTimeline) *StepStatus {
10808	s.Timeline = v
10809	return s
10810}
10811
10812// The summary of the cluster step.
10813type StepSummary struct {
10814	_ struct{} `type:"structure"`
10815
10816	// The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,
10817	// CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is available for backward
10818	// compatibility. We recommend using TERMINATE_CLUSTER instead.
10819	ActionOnFailure *string `type:"string" enum:"ActionOnFailure"`
10820
10821	// The Hadoop job configuration of the cluster step.
10822	Config *HadoopStepConfig `type:"structure"`
10823
10824	// The identifier of the cluster step.
10825	Id *string `type:"string"`
10826
10827	// The name of the cluster step.
10828	Name *string `type:"string"`
10829
10830	// The current execution status details of the cluster step.
10831	Status *StepStatus `type:"structure"`
10832}
10833
10834// String returns the string representation
10835func (s StepSummary) String() string {
10836	return awsutil.Prettify(s)
10837}
10838
10839// GoString returns the string representation
10840func (s StepSummary) GoString() string {
10841	return s.String()
10842}
10843
10844// SetActionOnFailure sets the ActionOnFailure field's value.
10845func (s *StepSummary) SetActionOnFailure(v string) *StepSummary {
10846	s.ActionOnFailure = &v
10847	return s
10848}
10849
10850// SetConfig sets the Config field's value.
10851func (s *StepSummary) SetConfig(v *HadoopStepConfig) *StepSummary {
10852	s.Config = v
10853	return s
10854}
10855
10856// SetId sets the Id field's value.
10857func (s *StepSummary) SetId(v string) *StepSummary {
10858	s.Id = &v
10859	return s
10860}
10861
10862// SetName sets the Name field's value.
10863func (s *StepSummary) SetName(v string) *StepSummary {
10864	s.Name = &v
10865	return s
10866}
10867
10868// SetStatus sets the Status field's value.
10869func (s *StepSummary) SetStatus(v *StepStatus) *StepSummary {
10870	s.Status = v
10871	return s
10872}
10873
10874// The timeline of the cluster step lifecycle.
10875type StepTimeline struct {
10876	_ struct{} `type:"structure"`
10877
10878	// The date and time when the cluster step was created.
10879	CreationDateTime *time.Time `type:"timestamp"`
10880
10881	// The date and time when the cluster step execution completed or failed.
10882	EndDateTime *time.Time `type:"timestamp"`
10883
10884	// The date and time when the cluster step execution started.
10885	StartDateTime *time.Time `type:"timestamp"`
10886}
10887
10888// String returns the string representation
10889func (s StepTimeline) String() string {
10890	return awsutil.Prettify(s)
10891}
10892
10893// GoString returns the string representation
10894func (s StepTimeline) GoString() string {
10895	return s.String()
10896}
10897
10898// SetCreationDateTime sets the CreationDateTime field's value.
10899func (s *StepTimeline) SetCreationDateTime(v time.Time) *StepTimeline {
10900	s.CreationDateTime = &v
10901	return s
10902}
10903
10904// SetEndDateTime sets the EndDateTime field's value.
10905func (s *StepTimeline) SetEndDateTime(v time.Time) *StepTimeline {
10906	s.EndDateTime = &v
10907	return s
10908}
10909
10910// SetStartDateTime sets the StartDateTime field's value.
10911func (s *StepTimeline) SetStartDateTime(v time.Time) *StepTimeline {
10912	s.StartDateTime = &v
10913	return s
10914}
10915
10916// The list of supported product configurations which allow user-supplied arguments.
10917// EMR accepts these arguments and forwards them to the corresponding installation
10918// script as bootstrap action arguments.
10919type SupportedProductConfig struct {
10920	_ struct{} `type:"structure"`
10921
10922	// The list of user-supplied arguments.
10923	Args []*string `type:"list"`
10924
10925	// The name of the product configuration.
10926	Name *string `type:"string"`
10927}
10928
10929// String returns the string representation
10930func (s SupportedProductConfig) String() string {
10931	return awsutil.Prettify(s)
10932}
10933
10934// GoString returns the string representation
10935func (s SupportedProductConfig) GoString() string {
10936	return s.String()
10937}
10938
10939// SetArgs sets the Args field's value.
10940func (s *SupportedProductConfig) SetArgs(v []*string) *SupportedProductConfig {
10941	s.Args = v
10942	return s
10943}
10944
10945// SetName sets the Name field's value.
10946func (s *SupportedProductConfig) SetName(v string) *SupportedProductConfig {
10947	s.Name = &v
10948	return s
10949}
10950
10951// A key/value pair containing user-defined metadata that you can associate
10952// with an Amazon EMR resource. Tags make it easier to associate clusters in
10953// various ways, such as grouping clusters to track your Amazon EMR resource
10954// allocation costs. For more information, see Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10955type Tag struct {
10956	_ struct{} `type:"structure"`
10957
10958	// A user-defined key, which is the minimum required information for a valid
10959	// tag. For more information, see Tag (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10960	Key *string `type:"string"`
10961
10962	// A user-defined value, which is optional in a tag. For more information, see
10963	// Tag Clusters (https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html).
10964	Value *string `type:"string"`
10965}
10966
10967// String returns the string representation
10968func (s Tag) String() string {
10969	return awsutil.Prettify(s)
10970}
10971
10972// GoString returns the string representation
10973func (s Tag) GoString() string {
10974	return s.String()
10975}
10976
10977// SetKey sets the Key field's value.
10978func (s *Tag) SetKey(v string) *Tag {
10979	s.Key = &v
10980	return s
10981}
10982
10983// SetValue sets the Value field's value.
10984func (s *Tag) SetValue(v string) *Tag {
10985	s.Value = &v
10986	return s
10987}
10988
10989// Input to the TerminateJobFlows operation.
10990type TerminateJobFlowsInput struct {
10991	_ struct{} `type:"structure"`
10992
10993	// A list of job flows to be shutdown.
10994	//
10995	// JobFlowIds is a required field
10996	JobFlowIds []*string `type:"list" required:"true"`
10997}
10998
10999// String returns the string representation
11000func (s TerminateJobFlowsInput) String() string {
11001	return awsutil.Prettify(s)
11002}
11003
11004// GoString returns the string representation
11005func (s TerminateJobFlowsInput) GoString() string {
11006	return s.String()
11007}
11008
11009// Validate inspects the fields of the type to determine if they are valid.
11010func (s *TerminateJobFlowsInput) Validate() error {
11011	invalidParams := request.ErrInvalidParams{Context: "TerminateJobFlowsInput"}
11012	if s.JobFlowIds == nil {
11013		invalidParams.Add(request.NewErrParamRequired("JobFlowIds"))
11014	}
11015
11016	if invalidParams.Len() > 0 {
11017		return invalidParams
11018	}
11019	return nil
11020}
11021
11022// SetJobFlowIds sets the JobFlowIds field's value.
11023func (s *TerminateJobFlowsInput) SetJobFlowIds(v []*string) *TerminateJobFlowsInput {
11024	s.JobFlowIds = v
11025	return s
11026}
11027
11028type TerminateJobFlowsOutput struct {
11029	_ struct{} `type:"structure"`
11030}
11031
11032// String returns the string representation
11033func (s TerminateJobFlowsOutput) String() string {
11034	return awsutil.Prettify(s)
11035}
11036
11037// GoString returns the string representation
11038func (s TerminateJobFlowsOutput) GoString() string {
11039	return s.String()
11040}
11041
11042// EBS volume specifications such as volume type, IOPS, and size (GiB) that
11043// will be requested for the EBS volume attached to an EC2 instance in the cluster.
11044type VolumeSpecification struct {
11045	_ struct{} `type:"structure"`
11046
11047	// The number of I/O operations per second (IOPS) that the volume supports.
11048	Iops *int64 `type:"integer"`
11049
11050	// The volume size, in gibibytes (GiB). This can be a number from 1 - 1024.
11051	// If the volume type is EBS-optimized, the minimum value is 10.
11052	//
11053	// SizeInGB is a required field
11054	SizeInGB *int64 `type:"integer" required:"true"`
11055
11056	// The volume type. Volume types supported are gp2, io1, standard.
11057	//
11058	// VolumeType is a required field
11059	VolumeType *string `type:"string" required:"true"`
11060}
11061
11062// String returns the string representation
11063func (s VolumeSpecification) String() string {
11064	return awsutil.Prettify(s)
11065}
11066
11067// GoString returns the string representation
11068func (s VolumeSpecification) GoString() string {
11069	return s.String()
11070}
11071
11072// Validate inspects the fields of the type to determine if they are valid.
11073func (s *VolumeSpecification) Validate() error {
11074	invalidParams := request.ErrInvalidParams{Context: "VolumeSpecification"}
11075	if s.SizeInGB == nil {
11076		invalidParams.Add(request.NewErrParamRequired("SizeInGB"))
11077	}
11078	if s.VolumeType == nil {
11079		invalidParams.Add(request.NewErrParamRequired("VolumeType"))
11080	}
11081
11082	if invalidParams.Len() > 0 {
11083		return invalidParams
11084	}
11085	return nil
11086}
11087
11088// SetIops sets the Iops field's value.
11089func (s *VolumeSpecification) SetIops(v int64) *VolumeSpecification {
11090	s.Iops = &v
11091	return s
11092}
11093
11094// SetSizeInGB sets the SizeInGB field's value.
11095func (s *VolumeSpecification) SetSizeInGB(v int64) *VolumeSpecification {
11096	s.SizeInGB = &v
11097	return s
11098}
11099
11100// SetVolumeType sets the VolumeType field's value.
11101func (s *VolumeSpecification) SetVolumeType(v string) *VolumeSpecification {
11102	s.VolumeType = &v
11103	return s
11104}
11105
11106const (
11107	// ActionOnFailureTerminateJobFlow is a ActionOnFailure enum value
11108	ActionOnFailureTerminateJobFlow = "TERMINATE_JOB_FLOW"
11109
11110	// ActionOnFailureTerminateCluster is a ActionOnFailure enum value
11111	ActionOnFailureTerminateCluster = "TERMINATE_CLUSTER"
11112
11113	// ActionOnFailureCancelAndWait is a ActionOnFailure enum value
11114	ActionOnFailureCancelAndWait = "CANCEL_AND_WAIT"
11115
11116	// ActionOnFailureContinue is a ActionOnFailure enum value
11117	ActionOnFailureContinue = "CONTINUE"
11118)
11119
11120const (
11121	// AdjustmentTypeChangeInCapacity is a AdjustmentType enum value
11122	AdjustmentTypeChangeInCapacity = "CHANGE_IN_CAPACITY"
11123
11124	// AdjustmentTypePercentChangeInCapacity is a AdjustmentType enum value
11125	AdjustmentTypePercentChangeInCapacity = "PERCENT_CHANGE_IN_CAPACITY"
11126
11127	// AdjustmentTypeExactCapacity is a AdjustmentType enum value
11128	AdjustmentTypeExactCapacity = "EXACT_CAPACITY"
11129)
11130
11131const (
11132	// AutoScalingPolicyStatePending is a AutoScalingPolicyState enum value
11133	AutoScalingPolicyStatePending = "PENDING"
11134
11135	// AutoScalingPolicyStateAttaching is a AutoScalingPolicyState enum value
11136	AutoScalingPolicyStateAttaching = "ATTACHING"
11137
11138	// AutoScalingPolicyStateAttached is a AutoScalingPolicyState enum value
11139	AutoScalingPolicyStateAttached = "ATTACHED"
11140
11141	// AutoScalingPolicyStateDetaching is a AutoScalingPolicyState enum value
11142	AutoScalingPolicyStateDetaching = "DETACHING"
11143
11144	// AutoScalingPolicyStateDetached is a AutoScalingPolicyState enum value
11145	AutoScalingPolicyStateDetached = "DETACHED"
11146
11147	// AutoScalingPolicyStateFailed is a AutoScalingPolicyState enum value
11148	AutoScalingPolicyStateFailed = "FAILED"
11149)
11150
11151const (
11152	// AutoScalingPolicyStateChangeReasonCodeUserRequest is a AutoScalingPolicyStateChangeReasonCode enum value
11153	AutoScalingPolicyStateChangeReasonCodeUserRequest = "USER_REQUEST"
11154
11155	// AutoScalingPolicyStateChangeReasonCodeProvisionFailure is a AutoScalingPolicyStateChangeReasonCode enum value
11156	AutoScalingPolicyStateChangeReasonCodeProvisionFailure = "PROVISION_FAILURE"
11157
11158	// AutoScalingPolicyStateChangeReasonCodeCleanupFailure is a AutoScalingPolicyStateChangeReasonCode enum value
11159	AutoScalingPolicyStateChangeReasonCodeCleanupFailure = "CLEANUP_FAILURE"
11160)
11161
11162const (
11163	// CancelStepsRequestStatusSubmitted is a CancelStepsRequestStatus enum value
11164	CancelStepsRequestStatusSubmitted = "SUBMITTED"
11165
11166	// CancelStepsRequestStatusFailed is a CancelStepsRequestStatus enum value
11167	CancelStepsRequestStatusFailed = "FAILED"
11168)
11169
11170const (
11171	// ClusterStateStarting is a ClusterState enum value
11172	ClusterStateStarting = "STARTING"
11173
11174	// ClusterStateBootstrapping is a ClusterState enum value
11175	ClusterStateBootstrapping = "BOOTSTRAPPING"
11176
11177	// ClusterStateRunning is a ClusterState enum value
11178	ClusterStateRunning = "RUNNING"
11179
11180	// ClusterStateWaiting is a ClusterState enum value
11181	ClusterStateWaiting = "WAITING"
11182
11183	// ClusterStateTerminating is a ClusterState enum value
11184	ClusterStateTerminating = "TERMINATING"
11185
11186	// ClusterStateTerminated is a ClusterState enum value
11187	ClusterStateTerminated = "TERMINATED"
11188
11189	// ClusterStateTerminatedWithErrors is a ClusterState enum value
11190	ClusterStateTerminatedWithErrors = "TERMINATED_WITH_ERRORS"
11191)
11192
11193const (
11194	// ClusterStateChangeReasonCodeInternalError is a ClusterStateChangeReasonCode enum value
11195	ClusterStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11196
11197	// ClusterStateChangeReasonCodeValidationError is a ClusterStateChangeReasonCode enum value
11198	ClusterStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11199
11200	// ClusterStateChangeReasonCodeInstanceFailure is a ClusterStateChangeReasonCode enum value
11201	ClusterStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11202
11203	// ClusterStateChangeReasonCodeInstanceFleetTimeout is a ClusterStateChangeReasonCode enum value
11204	ClusterStateChangeReasonCodeInstanceFleetTimeout = "INSTANCE_FLEET_TIMEOUT"
11205
11206	// ClusterStateChangeReasonCodeBootstrapFailure is a ClusterStateChangeReasonCode enum value
11207	ClusterStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
11208
11209	// ClusterStateChangeReasonCodeUserRequest is a ClusterStateChangeReasonCode enum value
11210	ClusterStateChangeReasonCodeUserRequest = "USER_REQUEST"
11211
11212	// ClusterStateChangeReasonCodeStepFailure is a ClusterStateChangeReasonCode enum value
11213	ClusterStateChangeReasonCodeStepFailure = "STEP_FAILURE"
11214
11215	// ClusterStateChangeReasonCodeAllStepsCompleted is a ClusterStateChangeReasonCode enum value
11216	ClusterStateChangeReasonCodeAllStepsCompleted = "ALL_STEPS_COMPLETED"
11217)
11218
11219const (
11220	// ComparisonOperatorGreaterThanOrEqual is a ComparisonOperator enum value
11221	ComparisonOperatorGreaterThanOrEqual = "GREATER_THAN_OR_EQUAL"
11222
11223	// ComparisonOperatorGreaterThan is a ComparisonOperator enum value
11224	ComparisonOperatorGreaterThan = "GREATER_THAN"
11225
11226	// ComparisonOperatorLessThan is a ComparisonOperator enum value
11227	ComparisonOperatorLessThan = "LESS_THAN"
11228
11229	// ComparisonOperatorLessThanOrEqual is a ComparisonOperator enum value
11230	ComparisonOperatorLessThanOrEqual = "LESS_THAN_OR_EQUAL"
11231)
11232
11233const (
11234	// InstanceCollectionTypeInstanceFleet is a InstanceCollectionType enum value
11235	InstanceCollectionTypeInstanceFleet = "INSTANCE_FLEET"
11236
11237	// InstanceCollectionTypeInstanceGroup is a InstanceCollectionType enum value
11238	InstanceCollectionTypeInstanceGroup = "INSTANCE_GROUP"
11239)
11240
11241const (
11242	// InstanceFleetStateProvisioning is a InstanceFleetState enum value
11243	InstanceFleetStateProvisioning = "PROVISIONING"
11244
11245	// InstanceFleetStateBootstrapping is a InstanceFleetState enum value
11246	InstanceFleetStateBootstrapping = "BOOTSTRAPPING"
11247
11248	// InstanceFleetStateRunning is a InstanceFleetState enum value
11249	InstanceFleetStateRunning = "RUNNING"
11250
11251	// InstanceFleetStateResizing is a InstanceFleetState enum value
11252	InstanceFleetStateResizing = "RESIZING"
11253
11254	// InstanceFleetStateSuspended is a InstanceFleetState enum value
11255	InstanceFleetStateSuspended = "SUSPENDED"
11256
11257	// InstanceFleetStateTerminating is a InstanceFleetState enum value
11258	InstanceFleetStateTerminating = "TERMINATING"
11259
11260	// InstanceFleetStateTerminated is a InstanceFleetState enum value
11261	InstanceFleetStateTerminated = "TERMINATED"
11262)
11263
11264const (
11265	// InstanceFleetStateChangeReasonCodeInternalError is a InstanceFleetStateChangeReasonCode enum value
11266	InstanceFleetStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11267
11268	// InstanceFleetStateChangeReasonCodeValidationError is a InstanceFleetStateChangeReasonCode enum value
11269	InstanceFleetStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11270
11271	// InstanceFleetStateChangeReasonCodeInstanceFailure is a InstanceFleetStateChangeReasonCode enum value
11272	InstanceFleetStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11273
11274	// InstanceFleetStateChangeReasonCodeClusterTerminated is a InstanceFleetStateChangeReasonCode enum value
11275	InstanceFleetStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
11276)
11277
11278const (
11279	// InstanceFleetTypeMaster is a InstanceFleetType enum value
11280	InstanceFleetTypeMaster = "MASTER"
11281
11282	// InstanceFleetTypeCore is a InstanceFleetType enum value
11283	InstanceFleetTypeCore = "CORE"
11284
11285	// InstanceFleetTypeTask is a InstanceFleetType enum value
11286	InstanceFleetTypeTask = "TASK"
11287)
11288
11289const (
11290	// InstanceGroupStateProvisioning is a InstanceGroupState enum value
11291	InstanceGroupStateProvisioning = "PROVISIONING"
11292
11293	// InstanceGroupStateBootstrapping is a InstanceGroupState enum value
11294	InstanceGroupStateBootstrapping = "BOOTSTRAPPING"
11295
11296	// InstanceGroupStateRunning is a InstanceGroupState enum value
11297	InstanceGroupStateRunning = "RUNNING"
11298
11299	// InstanceGroupStateReconfiguring is a InstanceGroupState enum value
11300	InstanceGroupStateReconfiguring = "RECONFIGURING"
11301
11302	// InstanceGroupStateResizing is a InstanceGroupState enum value
11303	InstanceGroupStateResizing = "RESIZING"
11304
11305	// InstanceGroupStateSuspended is a InstanceGroupState enum value
11306	InstanceGroupStateSuspended = "SUSPENDED"
11307
11308	// InstanceGroupStateTerminating is a InstanceGroupState enum value
11309	InstanceGroupStateTerminating = "TERMINATING"
11310
11311	// InstanceGroupStateTerminated is a InstanceGroupState enum value
11312	InstanceGroupStateTerminated = "TERMINATED"
11313
11314	// InstanceGroupStateArrested is a InstanceGroupState enum value
11315	InstanceGroupStateArrested = "ARRESTED"
11316
11317	// InstanceGroupStateShuttingDown is a InstanceGroupState enum value
11318	InstanceGroupStateShuttingDown = "SHUTTING_DOWN"
11319
11320	// InstanceGroupStateEnded is a InstanceGroupState enum value
11321	InstanceGroupStateEnded = "ENDED"
11322)
11323
11324const (
11325	// InstanceGroupStateChangeReasonCodeInternalError is a InstanceGroupStateChangeReasonCode enum value
11326	InstanceGroupStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11327
11328	// InstanceGroupStateChangeReasonCodeValidationError is a InstanceGroupStateChangeReasonCode enum value
11329	InstanceGroupStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11330
11331	// InstanceGroupStateChangeReasonCodeInstanceFailure is a InstanceGroupStateChangeReasonCode enum value
11332	InstanceGroupStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11333
11334	// InstanceGroupStateChangeReasonCodeClusterTerminated is a InstanceGroupStateChangeReasonCode enum value
11335	InstanceGroupStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
11336)
11337
11338const (
11339	// InstanceGroupTypeMaster is a InstanceGroupType enum value
11340	InstanceGroupTypeMaster = "MASTER"
11341
11342	// InstanceGroupTypeCore is a InstanceGroupType enum value
11343	InstanceGroupTypeCore = "CORE"
11344
11345	// InstanceGroupTypeTask is a InstanceGroupType enum value
11346	InstanceGroupTypeTask = "TASK"
11347)
11348
11349const (
11350	// InstanceRoleTypeMaster is a InstanceRoleType enum value
11351	InstanceRoleTypeMaster = "MASTER"
11352
11353	// InstanceRoleTypeCore is a InstanceRoleType enum value
11354	InstanceRoleTypeCore = "CORE"
11355
11356	// InstanceRoleTypeTask is a InstanceRoleType enum value
11357	InstanceRoleTypeTask = "TASK"
11358)
11359
11360const (
11361	// InstanceStateAwaitingFulfillment is a InstanceState enum value
11362	InstanceStateAwaitingFulfillment = "AWAITING_FULFILLMENT"
11363
11364	// InstanceStateProvisioning is a InstanceState enum value
11365	InstanceStateProvisioning = "PROVISIONING"
11366
11367	// InstanceStateBootstrapping is a InstanceState enum value
11368	InstanceStateBootstrapping = "BOOTSTRAPPING"
11369
11370	// InstanceStateRunning is a InstanceState enum value
11371	InstanceStateRunning = "RUNNING"
11372
11373	// InstanceStateTerminated is a InstanceState enum value
11374	InstanceStateTerminated = "TERMINATED"
11375)
11376
11377const (
11378	// InstanceStateChangeReasonCodeInternalError is a InstanceStateChangeReasonCode enum value
11379	InstanceStateChangeReasonCodeInternalError = "INTERNAL_ERROR"
11380
11381	// InstanceStateChangeReasonCodeValidationError is a InstanceStateChangeReasonCode enum value
11382	InstanceStateChangeReasonCodeValidationError = "VALIDATION_ERROR"
11383
11384	// InstanceStateChangeReasonCodeInstanceFailure is a InstanceStateChangeReasonCode enum value
11385	InstanceStateChangeReasonCodeInstanceFailure = "INSTANCE_FAILURE"
11386
11387	// InstanceStateChangeReasonCodeBootstrapFailure is a InstanceStateChangeReasonCode enum value
11388	InstanceStateChangeReasonCodeBootstrapFailure = "BOOTSTRAP_FAILURE"
11389
11390	// InstanceStateChangeReasonCodeClusterTerminated is a InstanceStateChangeReasonCode enum value
11391	InstanceStateChangeReasonCodeClusterTerminated = "CLUSTER_TERMINATED"
11392)
11393
11394// The type of instance.
11395const (
11396	// JobFlowExecutionStateStarting is a JobFlowExecutionState enum value
11397	JobFlowExecutionStateStarting = "STARTING"
11398
11399	// JobFlowExecutionStateBootstrapping is a JobFlowExecutionState enum value
11400	JobFlowExecutionStateBootstrapping = "BOOTSTRAPPING"
11401
11402	// JobFlowExecutionStateRunning is a JobFlowExecutionState enum value
11403	JobFlowExecutionStateRunning = "RUNNING"
11404
11405	// JobFlowExecutionStateWaiting is a JobFlowExecutionState enum value
11406	JobFlowExecutionStateWaiting = "WAITING"
11407
11408	// JobFlowExecutionStateShuttingDown is a JobFlowExecutionState enum value
11409	JobFlowExecutionStateShuttingDown = "SHUTTING_DOWN"
11410
11411	// JobFlowExecutionStateTerminated is a JobFlowExecutionState enum value
11412	JobFlowExecutionStateTerminated = "TERMINATED"
11413
11414	// JobFlowExecutionStateCompleted is a JobFlowExecutionState enum value
11415	JobFlowExecutionStateCompleted = "COMPLETED"
11416
11417	// JobFlowExecutionStateFailed is a JobFlowExecutionState enum value
11418	JobFlowExecutionStateFailed = "FAILED"
11419)
11420
11421const (
11422	// MarketTypeOnDemand is a MarketType enum value
11423	MarketTypeOnDemand = "ON_DEMAND"
11424
11425	// MarketTypeSpot is a MarketType enum value
11426	MarketTypeSpot = "SPOT"
11427)
11428
11429const (
11430	// RepoUpgradeOnBootSecurity is a RepoUpgradeOnBoot enum value
11431	RepoUpgradeOnBootSecurity = "SECURITY"
11432
11433	// RepoUpgradeOnBootNone is a RepoUpgradeOnBoot enum value
11434	RepoUpgradeOnBootNone = "NONE"
11435)
11436
11437const (
11438	// ScaleDownBehaviorTerminateAtInstanceHour is a ScaleDownBehavior enum value
11439	ScaleDownBehaviorTerminateAtInstanceHour = "TERMINATE_AT_INSTANCE_HOUR"
11440
11441	// ScaleDownBehaviorTerminateAtTaskCompletion is a ScaleDownBehavior enum value
11442	ScaleDownBehaviorTerminateAtTaskCompletion = "TERMINATE_AT_TASK_COMPLETION"
11443)
11444
11445const (
11446	// SpotProvisioningTimeoutActionSwitchToOnDemand is a SpotProvisioningTimeoutAction enum value
11447	SpotProvisioningTimeoutActionSwitchToOnDemand = "SWITCH_TO_ON_DEMAND"
11448
11449	// SpotProvisioningTimeoutActionTerminateCluster is a SpotProvisioningTimeoutAction enum value
11450	SpotProvisioningTimeoutActionTerminateCluster = "TERMINATE_CLUSTER"
11451)
11452
11453const (
11454	// StatisticSampleCount is a Statistic enum value
11455	StatisticSampleCount = "SAMPLE_COUNT"
11456
11457	// StatisticAverage is a Statistic enum value
11458	StatisticAverage = "AVERAGE"
11459
11460	// StatisticSum is a Statistic enum value
11461	StatisticSum = "SUM"
11462
11463	// StatisticMinimum is a Statistic enum value
11464	StatisticMinimum = "MINIMUM"
11465
11466	// StatisticMaximum is a Statistic enum value
11467	StatisticMaximum = "MAXIMUM"
11468)
11469
11470const (
11471	// StepCancellationOptionSendInterrupt is a StepCancellationOption enum value
11472	StepCancellationOptionSendInterrupt = "SEND_INTERRUPT"
11473
11474	// StepCancellationOptionTerminateProcess is a StepCancellationOption enum value
11475	StepCancellationOptionTerminateProcess = "TERMINATE_PROCESS"
11476)
11477
11478const (
11479	// StepExecutionStatePending is a StepExecutionState enum value
11480	StepExecutionStatePending = "PENDING"
11481
11482	// StepExecutionStateRunning is a StepExecutionState enum value
11483	StepExecutionStateRunning = "RUNNING"
11484
11485	// StepExecutionStateContinue is a StepExecutionState enum value
11486	StepExecutionStateContinue = "CONTINUE"
11487
11488	// StepExecutionStateCompleted is a StepExecutionState enum value
11489	StepExecutionStateCompleted = "COMPLETED"
11490
11491	// StepExecutionStateCancelled is a StepExecutionState enum value
11492	StepExecutionStateCancelled = "CANCELLED"
11493
11494	// StepExecutionStateFailed is a StepExecutionState enum value
11495	StepExecutionStateFailed = "FAILED"
11496
11497	// StepExecutionStateInterrupted is a StepExecutionState enum value
11498	StepExecutionStateInterrupted = "INTERRUPTED"
11499)
11500
11501const (
11502	// StepStatePending is a StepState enum value
11503	StepStatePending = "PENDING"
11504
11505	// StepStateCancelPending is a StepState enum value
11506	StepStateCancelPending = "CANCEL_PENDING"
11507
11508	// StepStateRunning is a StepState enum value
11509	StepStateRunning = "RUNNING"
11510
11511	// StepStateCompleted is a StepState enum value
11512	StepStateCompleted = "COMPLETED"
11513
11514	// StepStateCancelled is a StepState enum value
11515	StepStateCancelled = "CANCELLED"
11516
11517	// StepStateFailed is a StepState enum value
11518	StepStateFailed = "FAILED"
11519
11520	// StepStateInterrupted is a StepState enum value
11521	StepStateInterrupted = "INTERRUPTED"
11522)
11523
11524const (
11525	// StepStateChangeReasonCodeNone is a StepStateChangeReasonCode enum value
11526	StepStateChangeReasonCodeNone = "NONE"
11527)
11528
11529const (
11530	// UnitNone is a Unit enum value
11531	UnitNone = "NONE"
11532
11533	// UnitSeconds is a Unit enum value
11534	UnitSeconds = "SECONDS"
11535
11536	// UnitMicroSeconds is a Unit enum value
11537	UnitMicroSeconds = "MICRO_SECONDS"
11538
11539	// UnitMilliSeconds is a Unit enum value
11540	UnitMilliSeconds = "MILLI_SECONDS"
11541
11542	// UnitBytes is a Unit enum value
11543	UnitBytes = "BYTES"
11544
11545	// UnitKiloBytes is a Unit enum value
11546	UnitKiloBytes = "KILO_BYTES"
11547
11548	// UnitMegaBytes is a Unit enum value
11549	UnitMegaBytes = "MEGA_BYTES"
11550
11551	// UnitGigaBytes is a Unit enum value
11552	UnitGigaBytes = "GIGA_BYTES"
11553
11554	// UnitTeraBytes is a Unit enum value
11555	UnitTeraBytes = "TERA_BYTES"
11556
11557	// UnitBits is a Unit enum value
11558	UnitBits = "BITS"
11559
11560	// UnitKiloBits is a Unit enum value
11561	UnitKiloBits = "KILO_BITS"
11562
11563	// UnitMegaBits is a Unit enum value
11564	UnitMegaBits = "MEGA_BITS"
11565
11566	// UnitGigaBits is a Unit enum value
11567	UnitGigaBits = "GIGA_BITS"
11568
11569	// UnitTeraBits is a Unit enum value
11570	UnitTeraBits = "TERA_BITS"
11571
11572	// UnitPercent is a Unit enum value
11573	UnitPercent = "PERCENT"
11574
11575	// UnitCount is a Unit enum value
11576	UnitCount = "COUNT"
11577
11578	// UnitBytesPerSecond is a Unit enum value
11579	UnitBytesPerSecond = "BYTES_PER_SECOND"
11580
11581	// UnitKiloBytesPerSecond is a Unit enum value
11582	UnitKiloBytesPerSecond = "KILO_BYTES_PER_SECOND"
11583
11584	// UnitMegaBytesPerSecond is a Unit enum value
11585	UnitMegaBytesPerSecond = "MEGA_BYTES_PER_SECOND"
11586
11587	// UnitGigaBytesPerSecond is a Unit enum value
11588	UnitGigaBytesPerSecond = "GIGA_BYTES_PER_SECOND"
11589
11590	// UnitTeraBytesPerSecond is a Unit enum value
11591	UnitTeraBytesPerSecond = "TERA_BYTES_PER_SECOND"
11592
11593	// UnitBitsPerSecond is a Unit enum value
11594	UnitBitsPerSecond = "BITS_PER_SECOND"
11595
11596	// UnitKiloBitsPerSecond is a Unit enum value
11597	UnitKiloBitsPerSecond = "KILO_BITS_PER_SECOND"
11598
11599	// UnitMegaBitsPerSecond is a Unit enum value
11600	UnitMegaBitsPerSecond = "MEGA_BITS_PER_SECOND"
11601
11602	// UnitGigaBitsPerSecond is a Unit enum value
11603	UnitGigaBitsPerSecond = "GIGA_BITS_PER_SECOND"
11604
11605	// UnitTeraBitsPerSecond is a Unit enum value
11606	UnitTeraBitsPerSecond = "TERA_BITS_PER_SECOND"
11607
11608	// UnitCountPerSecond is a Unit enum value
11609	UnitCountPerSecond = "COUNT_PER_SECOND"
11610)
11611