1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package ecs
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 opCreateCapacityProvider = "CreateCapacityProvider"
17
18// CreateCapacityProviderRequest generates a "aws/request.Request" representing the
19// client's request for the CreateCapacityProvider 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 CreateCapacityProvider for more information on using the CreateCapacityProvider
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 CreateCapacityProviderRequest method.
34//    req, resp := client.CreateCapacityProviderRequest(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/ecs-2014-11-13/CreateCapacityProvider
42func (c *ECS) CreateCapacityProviderRequest(input *CreateCapacityProviderInput) (req *request.Request, output *CreateCapacityProviderOutput) {
43	op := &request.Operation{
44		Name:       opCreateCapacityProvider,
45		HTTPMethod: "POST",
46		HTTPPath:   "/",
47	}
48
49	if input == nil {
50		input = &CreateCapacityProviderInput{}
51	}
52
53	output = &CreateCapacityProviderOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// CreateCapacityProvider API operation for Amazon EC2 Container Service.
59//
60// Creates a new capacity provider. Capacity providers are associated with an
61// Amazon ECS cluster and are used in capacity provider strategies to facilitate
62// cluster auto scaling.
63//
64// Only capacity providers using an Auto Scaling group can be created. Amazon
65// ECS tasks on AWS Fargate use the FARGATE and FARGATE_SPOT capacity providers
66// which are already created and available to all accounts in Regions supported
67// by AWS Fargate.
68//
69// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
70// with awserr.Error's Code and Message methods to get detailed information about
71// the error.
72//
73// See the AWS API reference guide for Amazon EC2 Container Service's
74// API operation CreateCapacityProvider for usage and error information.
75//
76// Returned Error Types:
77//   * ServerException
78//   These errors are usually caused by a server issue.
79//
80//   * ClientException
81//   These errors are usually caused by a client action, such as using an action
82//   or resource on behalf of a user that doesn't have permissions to use the
83//   action or resource, or specifying an identifier that is not valid.
84//
85//   * InvalidParameterException
86//   The specified parameter is invalid. Review the available parameters for the
87//   API request.
88//
89//   * LimitExceededException
90//   The limit for the resource has been exceeded.
91//
92// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateCapacityProvider
93func (c *ECS) CreateCapacityProvider(input *CreateCapacityProviderInput) (*CreateCapacityProviderOutput, error) {
94	req, out := c.CreateCapacityProviderRequest(input)
95	return out, req.Send()
96}
97
98// CreateCapacityProviderWithContext is the same as CreateCapacityProvider with the addition of
99// the ability to pass a context and additional request options.
100//
101// See CreateCapacityProvider for details on how to use this API operation.
102//
103// The context must be non-nil and will be used for request cancellation. If
104// the context is nil a panic will occur. In the future the SDK may create
105// sub-contexts for http.Requests. See https://golang.org/pkg/context/
106// for more information on using Contexts.
107func (c *ECS) CreateCapacityProviderWithContext(ctx aws.Context, input *CreateCapacityProviderInput, opts ...request.Option) (*CreateCapacityProviderOutput, error) {
108	req, out := c.CreateCapacityProviderRequest(input)
109	req.SetContext(ctx)
110	req.ApplyOptions(opts...)
111	return out, req.Send()
112}
113
114const opCreateCluster = "CreateCluster"
115
116// CreateClusterRequest generates a "aws/request.Request" representing the
117// client's request for the CreateCluster operation. The "output" return
118// value will be populated with the request's response once the request completes
119// successfully.
120//
121// Use "Send" method on the returned Request to send the API call to the service.
122// the "output" return value is not valid until after Send returns without error.
123//
124// See CreateCluster for more information on using the CreateCluster
125// API call, and error handling.
126//
127// This method is useful when you want to inject custom logic or configuration
128// into the SDK's request lifecycle. Such as custom headers, or retry logic.
129//
130//
131//    // Example sending a request using the CreateClusterRequest method.
132//    req, resp := client.CreateClusterRequest(params)
133//
134//    err := req.Send()
135//    if err == nil { // resp is now filled
136//        fmt.Println(resp)
137//    }
138//
139// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateCluster
140func (c *ECS) CreateClusterRequest(input *CreateClusterInput) (req *request.Request, output *CreateClusterOutput) {
141	op := &request.Operation{
142		Name:       opCreateCluster,
143		HTTPMethod: "POST",
144		HTTPPath:   "/",
145	}
146
147	if input == nil {
148		input = &CreateClusterInput{}
149	}
150
151	output = &CreateClusterOutput{}
152	req = c.newRequest(op, input, output)
153	return
154}
155
156// CreateCluster API operation for Amazon EC2 Container Service.
157//
158// Creates a new Amazon ECS cluster. By default, your account receives a default
159// cluster when you launch your first container instance. However, you can create
160// your own cluster with a unique name with the CreateCluster action.
161//
162// When you call the CreateCluster API operation, Amazon ECS attempts to create
163// the Amazon ECS service-linked role for your account so that required resources
164// in other AWS services can be managed on your behalf. However, if the IAM
165// user that makes the call does not have permissions to create the service-linked
166// role, it is not created. For more information, see Using Service-Linked Roles
167// for Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html)
168// in the Amazon Elastic Container Service Developer Guide.
169//
170// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
171// with awserr.Error's Code and Message methods to get detailed information about
172// the error.
173//
174// See the AWS API reference guide for Amazon EC2 Container Service's
175// API operation CreateCluster for usage and error information.
176//
177// Returned Error Types:
178//   * ServerException
179//   These errors are usually caused by a server issue.
180//
181//   * ClientException
182//   These errors are usually caused by a client action, such as using an action
183//   or resource on behalf of a user that doesn't have permissions to use the
184//   action or resource, or specifying an identifier that is not valid.
185//
186//   * InvalidParameterException
187//   The specified parameter is invalid. Review the available parameters for the
188//   API request.
189//
190// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateCluster
191func (c *ECS) CreateCluster(input *CreateClusterInput) (*CreateClusterOutput, error) {
192	req, out := c.CreateClusterRequest(input)
193	return out, req.Send()
194}
195
196// CreateClusterWithContext is the same as CreateCluster with the addition of
197// the ability to pass a context and additional request options.
198//
199// See CreateCluster for details on how to use this API operation.
200//
201// The context must be non-nil and will be used for request cancellation. If
202// the context is nil a panic will occur. In the future the SDK may create
203// sub-contexts for http.Requests. See https://golang.org/pkg/context/
204// for more information on using Contexts.
205func (c *ECS) CreateClusterWithContext(ctx aws.Context, input *CreateClusterInput, opts ...request.Option) (*CreateClusterOutput, error) {
206	req, out := c.CreateClusterRequest(input)
207	req.SetContext(ctx)
208	req.ApplyOptions(opts...)
209	return out, req.Send()
210}
211
212const opCreateService = "CreateService"
213
214// CreateServiceRequest generates a "aws/request.Request" representing the
215// client's request for the CreateService operation. The "output" return
216// value will be populated with the request's response once the request completes
217// successfully.
218//
219// Use "Send" method on the returned Request to send the API call to the service.
220// the "output" return value is not valid until after Send returns without error.
221//
222// See CreateService for more information on using the CreateService
223// API call, and error handling.
224//
225// This method is useful when you want to inject custom logic or configuration
226// into the SDK's request lifecycle. Such as custom headers, or retry logic.
227//
228//
229//    // Example sending a request using the CreateServiceRequest method.
230//    req, resp := client.CreateServiceRequest(params)
231//
232//    err := req.Send()
233//    if err == nil { // resp is now filled
234//        fmt.Println(resp)
235//    }
236//
237// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateService
238func (c *ECS) CreateServiceRequest(input *CreateServiceInput) (req *request.Request, output *CreateServiceOutput) {
239	op := &request.Operation{
240		Name:       opCreateService,
241		HTTPMethod: "POST",
242		HTTPPath:   "/",
243	}
244
245	if input == nil {
246		input = &CreateServiceInput{}
247	}
248
249	output = &CreateServiceOutput{}
250	req = c.newRequest(op, input, output)
251	return
252}
253
254// CreateService API operation for Amazon EC2 Container Service.
255//
256// Runs and maintains a desired number of tasks from a specified task definition.
257// If the number of tasks running in a service drops below the desiredCount,
258// Amazon ECS runs another copy of the task in the specified cluster. To update
259// an existing service, see UpdateService.
260//
261// In addition to maintaining the desired count of tasks in your service, you
262// can optionally run your service behind one or more load balancers. The load
263// balancers distribute traffic across the tasks that are associated with the
264// service. For more information, see Service Load Balancing (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)
265// in the Amazon Elastic Container Service Developer Guide.
266//
267// Tasks for services that do not use a load balancer are considered healthy
268// if they're in the RUNNING state. Tasks for services that do use a load balancer
269// are considered healthy if they're in the RUNNING state and the container
270// instance that they're hosted on is reported as healthy by the load balancer.
271//
272// There are two service scheduler strategies available:
273//
274//    * REPLICA - The replica scheduling strategy places and maintains the desired
275//    number of tasks across your cluster. By default, the service scheduler
276//    spreads tasks across Availability Zones. You can use task placement strategies
277//    and constraints to customize task placement decisions. For more information,
278//    see Service Scheduler Concepts (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
279//    in the Amazon Elastic Container Service Developer Guide.
280//
281//    * DAEMON - The daemon scheduling strategy deploys exactly one task on
282//    each active container instance that meets all of the task placement constraints
283//    that you specify in your cluster. When using this strategy, you don't
284//    need to specify a desired number of tasks, a task placement strategy,
285//    or use Service Auto Scaling policies. For more information, see Service
286//    Scheduler Concepts (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)
287//    in the Amazon Elastic Container Service Developer Guide.
288//
289// You can optionally specify a deployment configuration for your service. The
290// deployment is triggered by changing properties, such as the task definition
291// or the desired count of a service, with an UpdateService operation. The default
292// value for a replica service for minimumHealthyPercent is 100%. The default
293// value for a daemon service for minimumHealthyPercent is 0%.
294//
295// If a service is using the ECS deployment controller, the minimum healthy
296// percent represents a lower limit on the number of tasks in a service that
297// must remain in the RUNNING state during a deployment, as a percentage of
298// the desired number of tasks (rounded up to the nearest integer), and while
299// any container instances are in the DRAINING state if the service contains
300// tasks using the EC2 launch type. This parameter enables you to deploy without
301// using additional cluster capacity. For example, if your service has a desired
302// number of four tasks and a minimum healthy percent of 50%, the scheduler
303// might stop two existing tasks to free up cluster capacity before starting
304// two new tasks. Tasks for services that do not use a load balancer are considered
305// healthy if they're in the RUNNING state. Tasks for services that do use a
306// load balancer are considered healthy if they're in the RUNNING state and
307// they're reported as healthy by the load balancer. The default value for minimum
308// healthy percent is 100%.
309//
310// If a service is using the ECS deployment controller, the maximum percent
311// parameter represents an upper limit on the number of tasks in a service that
312// are allowed in the RUNNING or PENDING state during a deployment, as a percentage
313// of the desired number of tasks (rounded down to the nearest integer), and
314// while any container instances are in the DRAINING state if the service contains
315// tasks using the EC2 launch type. This parameter enables you to define the
316// deployment batch size. For example, if your service has a desired number
317// of four tasks and a maximum percent value of 200%, the scheduler may start
318// four new tasks before stopping the four older tasks (provided that the cluster
319// resources required to do this are available). The default value for maximum
320// percent is 200%.
321//
322// If a service is using either the CODE_DEPLOY or EXTERNAL deployment controller
323// types and tasks that use the EC2 launch type, the minimum healthy percent
324// and maximum percent values are used only to define the lower and upper limit
325// on the number of the tasks in the service that remain in the RUNNING state
326// while the container instances are in the DRAINING state. If the tasks in
327// the service use the Fargate launch type, the minimum healthy percent and
328// maximum percent values aren't used, although they're currently visible when
329// describing your service.
330//
331// When creating a service that uses the EXTERNAL deployment controller, you
332// can specify only parameters that aren't controlled at the task set level.
333// The only required parameter is the service name. You control your services
334// using the CreateTaskSet operation. For more information, see Amazon ECS Deployment
335// Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
336// in the Amazon Elastic Container Service Developer Guide.
337//
338// When the service scheduler launches new tasks, it determines task placement
339// in your cluster using the following logic:
340//
341//    * Determine which of the container instances in your cluster can support
342//    your service's task definition (for example, they have the required CPU,
343//    memory, ports, and container instance attributes).
344//
345//    * By default, the service scheduler attempts to balance tasks across Availability
346//    Zones in this manner (although you can choose a different placement strategy)
347//    with the placementStrategy parameter): Sort the valid container instances,
348//    giving priority to instances that have the fewest number of running tasks
349//    for this service in their respective Availability Zone. For example, if
350//    zone A has one running service task and zones B and C each have zero,
351//    valid container instances in either zone B or C are considered optimal
352//    for placement. Place the new service task on a valid container instance
353//    in an optimal Availability Zone (based on the previous steps), favoring
354//    container instances with the fewest number of running tasks for this service.
355//
356// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
357// with awserr.Error's Code and Message methods to get detailed information about
358// the error.
359//
360// See the AWS API reference guide for Amazon EC2 Container Service's
361// API operation CreateService for usage and error information.
362//
363// Returned Error Types:
364//   * ServerException
365//   These errors are usually caused by a server issue.
366//
367//   * ClientException
368//   These errors are usually caused by a client action, such as using an action
369//   or resource on behalf of a user that doesn't have permissions to use the
370//   action or resource, or specifying an identifier that is not valid.
371//
372//   * InvalidParameterException
373//   The specified parameter is invalid. Review the available parameters for the
374//   API request.
375//
376//   * ClusterNotFoundException
377//   The specified cluster could not be found. You can view your available clusters
378//   with ListClusters. Amazon ECS clusters are Region-specific.
379//
380//   * UnsupportedFeatureException
381//   The specified task is not supported in this Region.
382//
383//   * PlatformUnknownException
384//   The specified platform version does not exist.
385//
386//   * PlatformTaskDefinitionIncompatibilityException
387//   The specified platform version does not satisfy the task definition's required
388//   capabilities.
389//
390//   * AccessDeniedException
391//   You do not have authorization to perform the requested action.
392//
393// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateService
394func (c *ECS) CreateService(input *CreateServiceInput) (*CreateServiceOutput, error) {
395	req, out := c.CreateServiceRequest(input)
396	return out, req.Send()
397}
398
399// CreateServiceWithContext is the same as CreateService with the addition of
400// the ability to pass a context and additional request options.
401//
402// See CreateService for details on how to use this API operation.
403//
404// The context must be non-nil and will be used for request cancellation. If
405// the context is nil a panic will occur. In the future the SDK may create
406// sub-contexts for http.Requests. See https://golang.org/pkg/context/
407// for more information on using Contexts.
408func (c *ECS) CreateServiceWithContext(ctx aws.Context, input *CreateServiceInput, opts ...request.Option) (*CreateServiceOutput, error) {
409	req, out := c.CreateServiceRequest(input)
410	req.SetContext(ctx)
411	req.ApplyOptions(opts...)
412	return out, req.Send()
413}
414
415const opCreateTaskSet = "CreateTaskSet"
416
417// CreateTaskSetRequest generates a "aws/request.Request" representing the
418// client's request for the CreateTaskSet operation. The "output" return
419// value will be populated with the request's response once the request completes
420// successfully.
421//
422// Use "Send" method on the returned Request to send the API call to the service.
423// the "output" return value is not valid until after Send returns without error.
424//
425// See CreateTaskSet for more information on using the CreateTaskSet
426// API call, and error handling.
427//
428// This method is useful when you want to inject custom logic or configuration
429// into the SDK's request lifecycle. Such as custom headers, or retry logic.
430//
431//
432//    // Example sending a request using the CreateTaskSetRequest method.
433//    req, resp := client.CreateTaskSetRequest(params)
434//
435//    err := req.Send()
436//    if err == nil { // resp is now filled
437//        fmt.Println(resp)
438//    }
439//
440// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateTaskSet
441func (c *ECS) CreateTaskSetRequest(input *CreateTaskSetInput) (req *request.Request, output *CreateTaskSetOutput) {
442	op := &request.Operation{
443		Name:       opCreateTaskSet,
444		HTTPMethod: "POST",
445		HTTPPath:   "/",
446	}
447
448	if input == nil {
449		input = &CreateTaskSetInput{}
450	}
451
452	output = &CreateTaskSetOutput{}
453	req = c.newRequest(op, input, output)
454	return
455}
456
457// CreateTaskSet API operation for Amazon EC2 Container Service.
458//
459// Create a task set in the specified cluster and service. This is used when
460// a service uses the EXTERNAL deployment controller type. For more information,
461// see Amazon ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
462// in the Amazon Elastic Container Service Developer Guide.
463//
464// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
465// with awserr.Error's Code and Message methods to get detailed information about
466// the error.
467//
468// See the AWS API reference guide for Amazon EC2 Container Service's
469// API operation CreateTaskSet for usage and error information.
470//
471// Returned Error Types:
472//   * ServerException
473//   These errors are usually caused by a server issue.
474//
475//   * ClientException
476//   These errors are usually caused by a client action, such as using an action
477//   or resource on behalf of a user that doesn't have permissions to use the
478//   action or resource, or specifying an identifier that is not valid.
479//
480//   * InvalidParameterException
481//   The specified parameter is invalid. Review the available parameters for the
482//   API request.
483//
484//   * ClusterNotFoundException
485//   The specified cluster could not be found. You can view your available clusters
486//   with ListClusters. Amazon ECS clusters are Region-specific.
487//
488//   * UnsupportedFeatureException
489//   The specified task is not supported in this Region.
490//
491//   * PlatformUnknownException
492//   The specified platform version does not exist.
493//
494//   * PlatformTaskDefinitionIncompatibilityException
495//   The specified platform version does not satisfy the task definition's required
496//   capabilities.
497//
498//   * AccessDeniedException
499//   You do not have authorization to perform the requested action.
500//
501//   * ServiceNotFoundException
502//   The specified service could not be found. You can view your available services
503//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
504//
505//   * ServiceNotActiveException
506//   The specified service is not active. You can't update a service that is inactive.
507//   If you have previously deleted a service, you can re-create it with CreateService.
508//
509// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/CreateTaskSet
510func (c *ECS) CreateTaskSet(input *CreateTaskSetInput) (*CreateTaskSetOutput, error) {
511	req, out := c.CreateTaskSetRequest(input)
512	return out, req.Send()
513}
514
515// CreateTaskSetWithContext is the same as CreateTaskSet with the addition of
516// the ability to pass a context and additional request options.
517//
518// See CreateTaskSet for details on how to use this API operation.
519//
520// The context must be non-nil and will be used for request cancellation. If
521// the context is nil a panic will occur. In the future the SDK may create
522// sub-contexts for http.Requests. See https://golang.org/pkg/context/
523// for more information on using Contexts.
524func (c *ECS) CreateTaskSetWithContext(ctx aws.Context, input *CreateTaskSetInput, opts ...request.Option) (*CreateTaskSetOutput, error) {
525	req, out := c.CreateTaskSetRequest(input)
526	req.SetContext(ctx)
527	req.ApplyOptions(opts...)
528	return out, req.Send()
529}
530
531const opDeleteAccountSetting = "DeleteAccountSetting"
532
533// DeleteAccountSettingRequest generates a "aws/request.Request" representing the
534// client's request for the DeleteAccountSetting operation. The "output" return
535// value will be populated with the request's response once the request completes
536// successfully.
537//
538// Use "Send" method on the returned Request to send the API call to the service.
539// the "output" return value is not valid until after Send returns without error.
540//
541// See DeleteAccountSetting for more information on using the DeleteAccountSetting
542// API call, and error handling.
543//
544// This method is useful when you want to inject custom logic or configuration
545// into the SDK's request lifecycle. Such as custom headers, or retry logic.
546//
547//
548//    // Example sending a request using the DeleteAccountSettingRequest method.
549//    req, resp := client.DeleteAccountSettingRequest(params)
550//
551//    err := req.Send()
552//    if err == nil { // resp is now filled
553//        fmt.Println(resp)
554//    }
555//
556// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteAccountSetting
557func (c *ECS) DeleteAccountSettingRequest(input *DeleteAccountSettingInput) (req *request.Request, output *DeleteAccountSettingOutput) {
558	op := &request.Operation{
559		Name:       opDeleteAccountSetting,
560		HTTPMethod: "POST",
561		HTTPPath:   "/",
562	}
563
564	if input == nil {
565		input = &DeleteAccountSettingInput{}
566	}
567
568	output = &DeleteAccountSettingOutput{}
569	req = c.newRequest(op, input, output)
570	return
571}
572
573// DeleteAccountSetting API operation for Amazon EC2 Container Service.
574//
575// Disables an account setting for a specified IAM user, IAM role, or the root
576// user for an account.
577//
578// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
579// with awserr.Error's Code and Message methods to get detailed information about
580// the error.
581//
582// See the AWS API reference guide for Amazon EC2 Container Service's
583// API operation DeleteAccountSetting for usage and error information.
584//
585// Returned Error Types:
586//   * ServerException
587//   These errors are usually caused by a server issue.
588//
589//   * ClientException
590//   These errors are usually caused by a client action, such as using an action
591//   or resource on behalf of a user that doesn't have permissions to use the
592//   action or resource, or specifying an identifier that is not valid.
593//
594//   * InvalidParameterException
595//   The specified parameter is invalid. Review the available parameters for the
596//   API request.
597//
598// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteAccountSetting
599func (c *ECS) DeleteAccountSetting(input *DeleteAccountSettingInput) (*DeleteAccountSettingOutput, error) {
600	req, out := c.DeleteAccountSettingRequest(input)
601	return out, req.Send()
602}
603
604// DeleteAccountSettingWithContext is the same as DeleteAccountSetting with the addition of
605// the ability to pass a context and additional request options.
606//
607// See DeleteAccountSetting for details on how to use this API operation.
608//
609// The context must be non-nil and will be used for request cancellation. If
610// the context is nil a panic will occur. In the future the SDK may create
611// sub-contexts for http.Requests. See https://golang.org/pkg/context/
612// for more information on using Contexts.
613func (c *ECS) DeleteAccountSettingWithContext(ctx aws.Context, input *DeleteAccountSettingInput, opts ...request.Option) (*DeleteAccountSettingOutput, error) {
614	req, out := c.DeleteAccountSettingRequest(input)
615	req.SetContext(ctx)
616	req.ApplyOptions(opts...)
617	return out, req.Send()
618}
619
620const opDeleteAttributes = "DeleteAttributes"
621
622// DeleteAttributesRequest generates a "aws/request.Request" representing the
623// client's request for the DeleteAttributes operation. The "output" return
624// value will be populated with the request's response once the request completes
625// successfully.
626//
627// Use "Send" method on the returned Request to send the API call to the service.
628// the "output" return value is not valid until after Send returns without error.
629//
630// See DeleteAttributes for more information on using the DeleteAttributes
631// API call, and error handling.
632//
633// This method is useful when you want to inject custom logic or configuration
634// into the SDK's request lifecycle. Such as custom headers, or retry logic.
635//
636//
637//    // Example sending a request using the DeleteAttributesRequest method.
638//    req, resp := client.DeleteAttributesRequest(params)
639//
640//    err := req.Send()
641//    if err == nil { // resp is now filled
642//        fmt.Println(resp)
643//    }
644//
645// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteAttributes
646func (c *ECS) DeleteAttributesRequest(input *DeleteAttributesInput) (req *request.Request, output *DeleteAttributesOutput) {
647	op := &request.Operation{
648		Name:       opDeleteAttributes,
649		HTTPMethod: "POST",
650		HTTPPath:   "/",
651	}
652
653	if input == nil {
654		input = &DeleteAttributesInput{}
655	}
656
657	output = &DeleteAttributesOutput{}
658	req = c.newRequest(op, input, output)
659	return
660}
661
662// DeleteAttributes API operation for Amazon EC2 Container Service.
663//
664// Deletes one or more custom attributes from an Amazon ECS resource.
665//
666// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
667// with awserr.Error's Code and Message methods to get detailed information about
668// the error.
669//
670// See the AWS API reference guide for Amazon EC2 Container Service's
671// API operation DeleteAttributes for usage and error information.
672//
673// Returned Error Types:
674//   * ClusterNotFoundException
675//   The specified cluster could not be found. You can view your available clusters
676//   with ListClusters. Amazon ECS clusters are Region-specific.
677//
678//   * TargetNotFoundException
679//   The specified target could not be found. You can view your available container
680//   instances with ListContainerInstances. Amazon ECS container instances are
681//   cluster-specific and Region-specific.
682//
683//   * InvalidParameterException
684//   The specified parameter is invalid. Review the available parameters for the
685//   API request.
686//
687// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteAttributes
688func (c *ECS) DeleteAttributes(input *DeleteAttributesInput) (*DeleteAttributesOutput, error) {
689	req, out := c.DeleteAttributesRequest(input)
690	return out, req.Send()
691}
692
693// DeleteAttributesWithContext is the same as DeleteAttributes with the addition of
694// the ability to pass a context and additional request options.
695//
696// See DeleteAttributes for details on how to use this API operation.
697//
698// The context must be non-nil and will be used for request cancellation. If
699// the context is nil a panic will occur. In the future the SDK may create
700// sub-contexts for http.Requests. See https://golang.org/pkg/context/
701// for more information on using Contexts.
702func (c *ECS) DeleteAttributesWithContext(ctx aws.Context, input *DeleteAttributesInput, opts ...request.Option) (*DeleteAttributesOutput, error) {
703	req, out := c.DeleteAttributesRequest(input)
704	req.SetContext(ctx)
705	req.ApplyOptions(opts...)
706	return out, req.Send()
707}
708
709const opDeleteCluster = "DeleteCluster"
710
711// DeleteClusterRequest generates a "aws/request.Request" representing the
712// client's request for the DeleteCluster operation. The "output" return
713// value will be populated with the request's response once the request completes
714// successfully.
715//
716// Use "Send" method on the returned Request to send the API call to the service.
717// the "output" return value is not valid until after Send returns without error.
718//
719// See DeleteCluster for more information on using the DeleteCluster
720// API call, and error handling.
721//
722// This method is useful when you want to inject custom logic or configuration
723// into the SDK's request lifecycle. Such as custom headers, or retry logic.
724//
725//
726//    // Example sending a request using the DeleteClusterRequest method.
727//    req, resp := client.DeleteClusterRequest(params)
728//
729//    err := req.Send()
730//    if err == nil { // resp is now filled
731//        fmt.Println(resp)
732//    }
733//
734// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteCluster
735func (c *ECS) DeleteClusterRequest(input *DeleteClusterInput) (req *request.Request, output *DeleteClusterOutput) {
736	op := &request.Operation{
737		Name:       opDeleteCluster,
738		HTTPMethod: "POST",
739		HTTPPath:   "/",
740	}
741
742	if input == nil {
743		input = &DeleteClusterInput{}
744	}
745
746	output = &DeleteClusterOutput{}
747	req = c.newRequest(op, input, output)
748	return
749}
750
751// DeleteCluster API operation for Amazon EC2 Container Service.
752//
753// Deletes the specified cluster. The cluster will transition to the INACTIVE
754// state. Clusters with an INACTIVE status may remain discoverable in your account
755// for a period of time. However, this behavior is subject to change in the
756// future, so you should not rely on INACTIVE clusters persisting.
757//
758// You must deregister all container instances from this cluster before you
759// may delete it. You can list the container instances in a cluster with ListContainerInstances
760// and deregister them with DeregisterContainerInstance.
761//
762// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
763// with awserr.Error's Code and Message methods to get detailed information about
764// the error.
765//
766// See the AWS API reference guide for Amazon EC2 Container Service's
767// API operation DeleteCluster for usage and error information.
768//
769// Returned Error Types:
770//   * ServerException
771//   These errors are usually caused by a server issue.
772//
773//   * ClientException
774//   These errors are usually caused by a client action, such as using an action
775//   or resource on behalf of a user that doesn't have permissions to use the
776//   action or resource, or specifying an identifier that is not valid.
777//
778//   * InvalidParameterException
779//   The specified parameter is invalid. Review the available parameters for the
780//   API request.
781//
782//   * ClusterNotFoundException
783//   The specified cluster could not be found. You can view your available clusters
784//   with ListClusters. Amazon ECS clusters are Region-specific.
785//
786//   * ClusterContainsContainerInstancesException
787//   You cannot delete a cluster that has registered container instances. First,
788//   deregister the container instances before you can delete the cluster. For
789//   more information, see DeregisterContainerInstance.
790//
791//   * ClusterContainsServicesException
792//   You cannot delete a cluster that contains services. First, update the service
793//   to reduce its desired task count to 0 and then delete the service. For more
794//   information, see UpdateService and DeleteService.
795//
796//   * ClusterContainsTasksException
797//   You cannot delete a cluster that has active tasks.
798//
799//   * UpdateInProgressException
800//   There is already a current Amazon ECS container agent update in progress
801//   on the specified container instance. If the container agent becomes disconnected
802//   while it is in a transitional stage, such as PENDING or STAGING, the update
803//   process can get stuck in that state. However, when the agent reconnects,
804//   it resumes where it stopped previously.
805//
806// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteCluster
807func (c *ECS) DeleteCluster(input *DeleteClusterInput) (*DeleteClusterOutput, error) {
808	req, out := c.DeleteClusterRequest(input)
809	return out, req.Send()
810}
811
812// DeleteClusterWithContext is the same as DeleteCluster with the addition of
813// the ability to pass a context and additional request options.
814//
815// See DeleteCluster for details on how to use this API operation.
816//
817// The context must be non-nil and will be used for request cancellation. If
818// the context is nil a panic will occur. In the future the SDK may create
819// sub-contexts for http.Requests. See https://golang.org/pkg/context/
820// for more information on using Contexts.
821func (c *ECS) DeleteClusterWithContext(ctx aws.Context, input *DeleteClusterInput, opts ...request.Option) (*DeleteClusterOutput, error) {
822	req, out := c.DeleteClusterRequest(input)
823	req.SetContext(ctx)
824	req.ApplyOptions(opts...)
825	return out, req.Send()
826}
827
828const opDeleteService = "DeleteService"
829
830// DeleteServiceRequest generates a "aws/request.Request" representing the
831// client's request for the DeleteService operation. The "output" return
832// value will be populated with the request's response once the request completes
833// successfully.
834//
835// Use "Send" method on the returned Request to send the API call to the service.
836// the "output" return value is not valid until after Send returns without error.
837//
838// See DeleteService for more information on using the DeleteService
839// API call, and error handling.
840//
841// This method is useful when you want to inject custom logic or configuration
842// into the SDK's request lifecycle. Such as custom headers, or retry logic.
843//
844//
845//    // Example sending a request using the DeleteServiceRequest method.
846//    req, resp := client.DeleteServiceRequest(params)
847//
848//    err := req.Send()
849//    if err == nil { // resp is now filled
850//        fmt.Println(resp)
851//    }
852//
853// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteService
854func (c *ECS) DeleteServiceRequest(input *DeleteServiceInput) (req *request.Request, output *DeleteServiceOutput) {
855	op := &request.Operation{
856		Name:       opDeleteService,
857		HTTPMethod: "POST",
858		HTTPPath:   "/",
859	}
860
861	if input == nil {
862		input = &DeleteServiceInput{}
863	}
864
865	output = &DeleteServiceOutput{}
866	req = c.newRequest(op, input, output)
867	return
868}
869
870// DeleteService API operation for Amazon EC2 Container Service.
871//
872// Deletes a specified service within a cluster. You can delete a service if
873// you have no running tasks in it and the desired task count is zero. If the
874// service is actively maintaining tasks, you cannot delete it, and you must
875// update the service to a desired task count of zero. For more information,
876// see UpdateService.
877//
878// When you delete a service, if there are still running tasks that require
879// cleanup, the service status moves from ACTIVE to DRAINING, and the service
880// is no longer visible in the console or in the ListServices API operation.
881// After all tasks have transitioned to either STOPPING or STOPPED status, the
882// service status moves from DRAINING to INACTIVE. Services in the DRAINING
883// or INACTIVE status can still be viewed with the DescribeServices API operation.
884// However, in the future, INACTIVE services may be cleaned up and purged from
885// Amazon ECS record keeping, and DescribeServices calls on those services return
886// a ServiceNotFoundException error.
887//
888// If you attempt to create a new service with the same name as an existing
889// service in either ACTIVE or DRAINING status, you receive an error.
890//
891// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
892// with awserr.Error's Code and Message methods to get detailed information about
893// the error.
894//
895// See the AWS API reference guide for Amazon EC2 Container Service's
896// API operation DeleteService for usage and error information.
897//
898// Returned Error Types:
899//   * ServerException
900//   These errors are usually caused by a server issue.
901//
902//   * ClientException
903//   These errors are usually caused by a client action, such as using an action
904//   or resource on behalf of a user that doesn't have permissions to use the
905//   action or resource, or specifying an identifier that is not valid.
906//
907//   * InvalidParameterException
908//   The specified parameter is invalid. Review the available parameters for the
909//   API request.
910//
911//   * ClusterNotFoundException
912//   The specified cluster could not be found. You can view your available clusters
913//   with ListClusters. Amazon ECS clusters are Region-specific.
914//
915//   * ServiceNotFoundException
916//   The specified service could not be found. You can view your available services
917//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
918//
919// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteService
920func (c *ECS) DeleteService(input *DeleteServiceInput) (*DeleteServiceOutput, error) {
921	req, out := c.DeleteServiceRequest(input)
922	return out, req.Send()
923}
924
925// DeleteServiceWithContext is the same as DeleteService with the addition of
926// the ability to pass a context and additional request options.
927//
928// See DeleteService for details on how to use this API operation.
929//
930// The context must be non-nil and will be used for request cancellation. If
931// the context is nil a panic will occur. In the future the SDK may create
932// sub-contexts for http.Requests. See https://golang.org/pkg/context/
933// for more information on using Contexts.
934func (c *ECS) DeleteServiceWithContext(ctx aws.Context, input *DeleteServiceInput, opts ...request.Option) (*DeleteServiceOutput, error) {
935	req, out := c.DeleteServiceRequest(input)
936	req.SetContext(ctx)
937	req.ApplyOptions(opts...)
938	return out, req.Send()
939}
940
941const opDeleteTaskSet = "DeleteTaskSet"
942
943// DeleteTaskSetRequest generates a "aws/request.Request" representing the
944// client's request for the DeleteTaskSet operation. The "output" return
945// value will be populated with the request's response once the request completes
946// successfully.
947//
948// Use "Send" method on the returned Request to send the API call to the service.
949// the "output" return value is not valid until after Send returns without error.
950//
951// See DeleteTaskSet for more information on using the DeleteTaskSet
952// API call, and error handling.
953//
954// This method is useful when you want to inject custom logic or configuration
955// into the SDK's request lifecycle. Such as custom headers, or retry logic.
956//
957//
958//    // Example sending a request using the DeleteTaskSetRequest method.
959//    req, resp := client.DeleteTaskSetRequest(params)
960//
961//    err := req.Send()
962//    if err == nil { // resp is now filled
963//        fmt.Println(resp)
964//    }
965//
966// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteTaskSet
967func (c *ECS) DeleteTaskSetRequest(input *DeleteTaskSetInput) (req *request.Request, output *DeleteTaskSetOutput) {
968	op := &request.Operation{
969		Name:       opDeleteTaskSet,
970		HTTPMethod: "POST",
971		HTTPPath:   "/",
972	}
973
974	if input == nil {
975		input = &DeleteTaskSetInput{}
976	}
977
978	output = &DeleteTaskSetOutput{}
979	req = c.newRequest(op, input, output)
980	return
981}
982
983// DeleteTaskSet API operation for Amazon EC2 Container Service.
984//
985// Deletes a specified task set within a service. This is used when a service
986// uses the EXTERNAL deployment controller type. For more information, see Amazon
987// ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
988// in the Amazon Elastic Container Service Developer Guide.
989//
990// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
991// with awserr.Error's Code and Message methods to get detailed information about
992// the error.
993//
994// See the AWS API reference guide for Amazon EC2 Container Service's
995// API operation DeleteTaskSet for usage and error information.
996//
997// Returned Error Types:
998//   * ServerException
999//   These errors are usually caused by a server issue.
1000//
1001//   * ClientException
1002//   These errors are usually caused by a client action, such as using an action
1003//   or resource on behalf of a user that doesn't have permissions to use the
1004//   action or resource, or specifying an identifier that is not valid.
1005//
1006//   * InvalidParameterException
1007//   The specified parameter is invalid. Review the available parameters for the
1008//   API request.
1009//
1010//   * ClusterNotFoundException
1011//   The specified cluster could not be found. You can view your available clusters
1012//   with ListClusters. Amazon ECS clusters are Region-specific.
1013//
1014//   * UnsupportedFeatureException
1015//   The specified task is not supported in this Region.
1016//
1017//   * AccessDeniedException
1018//   You do not have authorization to perform the requested action.
1019//
1020//   * ServiceNotFoundException
1021//   The specified service could not be found. You can view your available services
1022//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
1023//
1024//   * ServiceNotActiveException
1025//   The specified service is not active. You can't update a service that is inactive.
1026//   If you have previously deleted a service, you can re-create it with CreateService.
1027//
1028//   * TaskSetNotFoundException
1029//   The specified task set could not be found. You can view your available task
1030//   sets with DescribeTaskSets. Task sets are specific to each cluster, service
1031//   and Region.
1032//
1033// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeleteTaskSet
1034func (c *ECS) DeleteTaskSet(input *DeleteTaskSetInput) (*DeleteTaskSetOutput, error) {
1035	req, out := c.DeleteTaskSetRequest(input)
1036	return out, req.Send()
1037}
1038
1039// DeleteTaskSetWithContext is the same as DeleteTaskSet with the addition of
1040// the ability to pass a context and additional request options.
1041//
1042// See DeleteTaskSet for details on how to use this API operation.
1043//
1044// The context must be non-nil and will be used for request cancellation. If
1045// the context is nil a panic will occur. In the future the SDK may create
1046// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1047// for more information on using Contexts.
1048func (c *ECS) DeleteTaskSetWithContext(ctx aws.Context, input *DeleteTaskSetInput, opts ...request.Option) (*DeleteTaskSetOutput, error) {
1049	req, out := c.DeleteTaskSetRequest(input)
1050	req.SetContext(ctx)
1051	req.ApplyOptions(opts...)
1052	return out, req.Send()
1053}
1054
1055const opDeregisterContainerInstance = "DeregisterContainerInstance"
1056
1057// DeregisterContainerInstanceRequest generates a "aws/request.Request" representing the
1058// client's request for the DeregisterContainerInstance operation. The "output" return
1059// value will be populated with the request's response once the request completes
1060// successfully.
1061//
1062// Use "Send" method on the returned Request to send the API call to the service.
1063// the "output" return value is not valid until after Send returns without error.
1064//
1065// See DeregisterContainerInstance for more information on using the DeregisterContainerInstance
1066// API call, and error handling.
1067//
1068// This method is useful when you want to inject custom logic or configuration
1069// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1070//
1071//
1072//    // Example sending a request using the DeregisterContainerInstanceRequest method.
1073//    req, resp := client.DeregisterContainerInstanceRequest(params)
1074//
1075//    err := req.Send()
1076//    if err == nil { // resp is now filled
1077//        fmt.Println(resp)
1078//    }
1079//
1080// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeregisterContainerInstance
1081func (c *ECS) DeregisterContainerInstanceRequest(input *DeregisterContainerInstanceInput) (req *request.Request, output *DeregisterContainerInstanceOutput) {
1082	op := &request.Operation{
1083		Name:       opDeregisterContainerInstance,
1084		HTTPMethod: "POST",
1085		HTTPPath:   "/",
1086	}
1087
1088	if input == nil {
1089		input = &DeregisterContainerInstanceInput{}
1090	}
1091
1092	output = &DeregisterContainerInstanceOutput{}
1093	req = c.newRequest(op, input, output)
1094	return
1095}
1096
1097// DeregisterContainerInstance API operation for Amazon EC2 Container Service.
1098//
1099// Deregisters an Amazon ECS container instance from the specified cluster.
1100// This instance is no longer available to run tasks.
1101//
1102// If you intend to use the container instance for some other purpose after
1103// deregistration, you should stop all of the tasks running on the container
1104// instance before deregistration. That prevents any orphaned tasks from consuming
1105// resources.
1106//
1107// Deregistering a container instance removes the instance from a cluster, but
1108// it does not terminate the EC2 instance. If you are finished using the instance,
1109// be sure to terminate it in the Amazon EC2 console to stop billing.
1110//
1111// If you terminate a running container instance, Amazon ECS automatically deregisters
1112// the instance from your cluster (stopped container instances or instances
1113// with disconnected agents are not automatically deregistered when terminated).
1114//
1115// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1116// with awserr.Error's Code and Message methods to get detailed information about
1117// the error.
1118//
1119// See the AWS API reference guide for Amazon EC2 Container Service's
1120// API operation DeregisterContainerInstance for usage and error information.
1121//
1122// Returned Error Types:
1123//   * ServerException
1124//   These errors are usually caused by a server issue.
1125//
1126//   * ClientException
1127//   These errors are usually caused by a client action, such as using an action
1128//   or resource on behalf of a user that doesn't have permissions to use the
1129//   action or resource, or specifying an identifier that is not valid.
1130//
1131//   * InvalidParameterException
1132//   The specified parameter is invalid. Review the available parameters for the
1133//   API request.
1134//
1135//   * ClusterNotFoundException
1136//   The specified cluster could not be found. You can view your available clusters
1137//   with ListClusters. Amazon ECS clusters are Region-specific.
1138//
1139// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeregisterContainerInstance
1140func (c *ECS) DeregisterContainerInstance(input *DeregisterContainerInstanceInput) (*DeregisterContainerInstanceOutput, error) {
1141	req, out := c.DeregisterContainerInstanceRequest(input)
1142	return out, req.Send()
1143}
1144
1145// DeregisterContainerInstanceWithContext is the same as DeregisterContainerInstance with the addition of
1146// the ability to pass a context and additional request options.
1147//
1148// See DeregisterContainerInstance for details on how to use this API operation.
1149//
1150// The context must be non-nil and will be used for request cancellation. If
1151// the context is nil a panic will occur. In the future the SDK may create
1152// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1153// for more information on using Contexts.
1154func (c *ECS) DeregisterContainerInstanceWithContext(ctx aws.Context, input *DeregisterContainerInstanceInput, opts ...request.Option) (*DeregisterContainerInstanceOutput, error) {
1155	req, out := c.DeregisterContainerInstanceRequest(input)
1156	req.SetContext(ctx)
1157	req.ApplyOptions(opts...)
1158	return out, req.Send()
1159}
1160
1161const opDeregisterTaskDefinition = "DeregisterTaskDefinition"
1162
1163// DeregisterTaskDefinitionRequest generates a "aws/request.Request" representing the
1164// client's request for the DeregisterTaskDefinition operation. The "output" return
1165// value will be populated with the request's response once the request completes
1166// successfully.
1167//
1168// Use "Send" method on the returned Request to send the API call to the service.
1169// the "output" return value is not valid until after Send returns without error.
1170//
1171// See DeregisterTaskDefinition for more information on using the DeregisterTaskDefinition
1172// API call, and error handling.
1173//
1174// This method is useful when you want to inject custom logic or configuration
1175// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1176//
1177//
1178//    // Example sending a request using the DeregisterTaskDefinitionRequest method.
1179//    req, resp := client.DeregisterTaskDefinitionRequest(params)
1180//
1181//    err := req.Send()
1182//    if err == nil { // resp is now filled
1183//        fmt.Println(resp)
1184//    }
1185//
1186// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeregisterTaskDefinition
1187func (c *ECS) DeregisterTaskDefinitionRequest(input *DeregisterTaskDefinitionInput) (req *request.Request, output *DeregisterTaskDefinitionOutput) {
1188	op := &request.Operation{
1189		Name:       opDeregisterTaskDefinition,
1190		HTTPMethod: "POST",
1191		HTTPPath:   "/",
1192	}
1193
1194	if input == nil {
1195		input = &DeregisterTaskDefinitionInput{}
1196	}
1197
1198	output = &DeregisterTaskDefinitionOutput{}
1199	req = c.newRequest(op, input, output)
1200	return
1201}
1202
1203// DeregisterTaskDefinition API operation for Amazon EC2 Container Service.
1204//
1205// Deregisters the specified task definition by family and revision. Upon deregistration,
1206// the task definition is marked as INACTIVE. Existing tasks and services that
1207// reference an INACTIVE task definition continue to run without disruption.
1208// Existing services that reference an INACTIVE task definition can still scale
1209// up or down by modifying the service's desired count.
1210//
1211// You cannot use an INACTIVE task definition to run new tasks or create new
1212// services, and you cannot update an existing service to reference an INACTIVE
1213// task definition. However, there may be up to a 10-minute window following
1214// deregistration where these restrictions have not yet taken effect.
1215//
1216// At this time, INACTIVE task definitions remain discoverable in your account
1217// indefinitely. However, this behavior is subject to change in the future,
1218// so you should not rely on INACTIVE task definitions persisting beyond the
1219// lifecycle of any associated tasks and services.
1220//
1221// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1222// with awserr.Error's Code and Message methods to get detailed information about
1223// the error.
1224//
1225// See the AWS API reference guide for Amazon EC2 Container Service's
1226// API operation DeregisterTaskDefinition for usage and error information.
1227//
1228// Returned Error Types:
1229//   * ServerException
1230//   These errors are usually caused by a server issue.
1231//
1232//   * ClientException
1233//   These errors are usually caused by a client action, such as using an action
1234//   or resource on behalf of a user that doesn't have permissions to use the
1235//   action or resource, or specifying an identifier that is not valid.
1236//
1237//   * InvalidParameterException
1238//   The specified parameter is invalid. Review the available parameters for the
1239//   API request.
1240//
1241// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DeregisterTaskDefinition
1242func (c *ECS) DeregisterTaskDefinition(input *DeregisterTaskDefinitionInput) (*DeregisterTaskDefinitionOutput, error) {
1243	req, out := c.DeregisterTaskDefinitionRequest(input)
1244	return out, req.Send()
1245}
1246
1247// DeregisterTaskDefinitionWithContext is the same as DeregisterTaskDefinition with the addition of
1248// the ability to pass a context and additional request options.
1249//
1250// See DeregisterTaskDefinition for details on how to use this API operation.
1251//
1252// The context must be non-nil and will be used for request cancellation. If
1253// the context is nil a panic will occur. In the future the SDK may create
1254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1255// for more information on using Contexts.
1256func (c *ECS) DeregisterTaskDefinitionWithContext(ctx aws.Context, input *DeregisterTaskDefinitionInput, opts ...request.Option) (*DeregisterTaskDefinitionOutput, error) {
1257	req, out := c.DeregisterTaskDefinitionRequest(input)
1258	req.SetContext(ctx)
1259	req.ApplyOptions(opts...)
1260	return out, req.Send()
1261}
1262
1263const opDescribeCapacityProviders = "DescribeCapacityProviders"
1264
1265// DescribeCapacityProvidersRequest generates a "aws/request.Request" representing the
1266// client's request for the DescribeCapacityProviders operation. The "output" return
1267// value will be populated with the request's response once the request completes
1268// successfully.
1269//
1270// Use "Send" method on the returned Request to send the API call to the service.
1271// the "output" return value is not valid until after Send returns without error.
1272//
1273// See DescribeCapacityProviders for more information on using the DescribeCapacityProviders
1274// API call, and error handling.
1275//
1276// This method is useful when you want to inject custom logic or configuration
1277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1278//
1279//
1280//    // Example sending a request using the DescribeCapacityProvidersRequest method.
1281//    req, resp := client.DescribeCapacityProvidersRequest(params)
1282//
1283//    err := req.Send()
1284//    if err == nil { // resp is now filled
1285//        fmt.Println(resp)
1286//    }
1287//
1288// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeCapacityProviders
1289func (c *ECS) DescribeCapacityProvidersRequest(input *DescribeCapacityProvidersInput) (req *request.Request, output *DescribeCapacityProvidersOutput) {
1290	op := &request.Operation{
1291		Name:       opDescribeCapacityProviders,
1292		HTTPMethod: "POST",
1293		HTTPPath:   "/",
1294	}
1295
1296	if input == nil {
1297		input = &DescribeCapacityProvidersInput{}
1298	}
1299
1300	output = &DescribeCapacityProvidersOutput{}
1301	req = c.newRequest(op, input, output)
1302	return
1303}
1304
1305// DescribeCapacityProviders API operation for Amazon EC2 Container Service.
1306//
1307// Describes one or more of your capacity providers.
1308//
1309// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1310// with awserr.Error's Code and Message methods to get detailed information about
1311// the error.
1312//
1313// See the AWS API reference guide for Amazon EC2 Container Service's
1314// API operation DescribeCapacityProviders for usage and error information.
1315//
1316// Returned Error Types:
1317//   * ServerException
1318//   These errors are usually caused by a server issue.
1319//
1320//   * ClientException
1321//   These errors are usually caused by a client action, such as using an action
1322//   or resource on behalf of a user that doesn't have permissions to use the
1323//   action or resource, or specifying an identifier that is not valid.
1324//
1325//   * InvalidParameterException
1326//   The specified parameter is invalid. Review the available parameters for the
1327//   API request.
1328//
1329// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeCapacityProviders
1330func (c *ECS) DescribeCapacityProviders(input *DescribeCapacityProvidersInput) (*DescribeCapacityProvidersOutput, error) {
1331	req, out := c.DescribeCapacityProvidersRequest(input)
1332	return out, req.Send()
1333}
1334
1335// DescribeCapacityProvidersWithContext is the same as DescribeCapacityProviders with the addition of
1336// the ability to pass a context and additional request options.
1337//
1338// See DescribeCapacityProviders for details on how to use this API operation.
1339//
1340// The context must be non-nil and will be used for request cancellation. If
1341// the context is nil a panic will occur. In the future the SDK may create
1342// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1343// for more information on using Contexts.
1344func (c *ECS) DescribeCapacityProvidersWithContext(ctx aws.Context, input *DescribeCapacityProvidersInput, opts ...request.Option) (*DescribeCapacityProvidersOutput, error) {
1345	req, out := c.DescribeCapacityProvidersRequest(input)
1346	req.SetContext(ctx)
1347	req.ApplyOptions(opts...)
1348	return out, req.Send()
1349}
1350
1351const opDescribeClusters = "DescribeClusters"
1352
1353// DescribeClustersRequest generates a "aws/request.Request" representing the
1354// client's request for the DescribeClusters operation. The "output" return
1355// value will be populated with the request's response once the request completes
1356// successfully.
1357//
1358// Use "Send" method on the returned Request to send the API call to the service.
1359// the "output" return value is not valid until after Send returns without error.
1360//
1361// See DescribeClusters for more information on using the DescribeClusters
1362// API call, and error handling.
1363//
1364// This method is useful when you want to inject custom logic or configuration
1365// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1366//
1367//
1368//    // Example sending a request using the DescribeClustersRequest method.
1369//    req, resp := client.DescribeClustersRequest(params)
1370//
1371//    err := req.Send()
1372//    if err == nil { // resp is now filled
1373//        fmt.Println(resp)
1374//    }
1375//
1376// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeClusters
1377func (c *ECS) DescribeClustersRequest(input *DescribeClustersInput) (req *request.Request, output *DescribeClustersOutput) {
1378	op := &request.Operation{
1379		Name:       opDescribeClusters,
1380		HTTPMethod: "POST",
1381		HTTPPath:   "/",
1382	}
1383
1384	if input == nil {
1385		input = &DescribeClustersInput{}
1386	}
1387
1388	output = &DescribeClustersOutput{}
1389	req = c.newRequest(op, input, output)
1390	return
1391}
1392
1393// DescribeClusters API operation for Amazon EC2 Container Service.
1394//
1395// Describes one or more of your clusters.
1396//
1397// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1398// with awserr.Error's Code and Message methods to get detailed information about
1399// the error.
1400//
1401// See the AWS API reference guide for Amazon EC2 Container Service's
1402// API operation DescribeClusters for usage and error information.
1403//
1404// Returned Error Types:
1405//   * ServerException
1406//   These errors are usually caused by a server issue.
1407//
1408//   * ClientException
1409//   These errors are usually caused by a client action, such as using an action
1410//   or resource on behalf of a user that doesn't have permissions to use the
1411//   action or resource, or specifying an identifier that is not valid.
1412//
1413//   * InvalidParameterException
1414//   The specified parameter is invalid. Review the available parameters for the
1415//   API request.
1416//
1417// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeClusters
1418func (c *ECS) DescribeClusters(input *DescribeClustersInput) (*DescribeClustersOutput, error) {
1419	req, out := c.DescribeClustersRequest(input)
1420	return out, req.Send()
1421}
1422
1423// DescribeClustersWithContext is the same as DescribeClusters with the addition of
1424// the ability to pass a context and additional request options.
1425//
1426// See DescribeClusters for details on how to use this API operation.
1427//
1428// The context must be non-nil and will be used for request cancellation. If
1429// the context is nil a panic will occur. In the future the SDK may create
1430// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1431// for more information on using Contexts.
1432func (c *ECS) DescribeClustersWithContext(ctx aws.Context, input *DescribeClustersInput, opts ...request.Option) (*DescribeClustersOutput, error) {
1433	req, out := c.DescribeClustersRequest(input)
1434	req.SetContext(ctx)
1435	req.ApplyOptions(opts...)
1436	return out, req.Send()
1437}
1438
1439const opDescribeContainerInstances = "DescribeContainerInstances"
1440
1441// DescribeContainerInstancesRequest generates a "aws/request.Request" representing the
1442// client's request for the DescribeContainerInstances operation. The "output" return
1443// value will be populated with the request's response once the request completes
1444// successfully.
1445//
1446// Use "Send" method on the returned Request to send the API call to the service.
1447// the "output" return value is not valid until after Send returns without error.
1448//
1449// See DescribeContainerInstances for more information on using the DescribeContainerInstances
1450// API call, and error handling.
1451//
1452// This method is useful when you want to inject custom logic or configuration
1453// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1454//
1455//
1456//    // Example sending a request using the DescribeContainerInstancesRequest method.
1457//    req, resp := client.DescribeContainerInstancesRequest(params)
1458//
1459//    err := req.Send()
1460//    if err == nil { // resp is now filled
1461//        fmt.Println(resp)
1462//    }
1463//
1464// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeContainerInstances
1465func (c *ECS) DescribeContainerInstancesRequest(input *DescribeContainerInstancesInput) (req *request.Request, output *DescribeContainerInstancesOutput) {
1466	op := &request.Operation{
1467		Name:       opDescribeContainerInstances,
1468		HTTPMethod: "POST",
1469		HTTPPath:   "/",
1470	}
1471
1472	if input == nil {
1473		input = &DescribeContainerInstancesInput{}
1474	}
1475
1476	output = &DescribeContainerInstancesOutput{}
1477	req = c.newRequest(op, input, output)
1478	return
1479}
1480
1481// DescribeContainerInstances API operation for Amazon EC2 Container Service.
1482//
1483// Describes Amazon Elastic Container Service container instances. Returns metadata
1484// about registered and remaining resources on each container instance requested.
1485//
1486// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1487// with awserr.Error's Code and Message methods to get detailed information about
1488// the error.
1489//
1490// See the AWS API reference guide for Amazon EC2 Container Service's
1491// API operation DescribeContainerInstances for usage and error information.
1492//
1493// Returned Error Types:
1494//   * ServerException
1495//   These errors are usually caused by a server issue.
1496//
1497//   * ClientException
1498//   These errors are usually caused by a client action, such as using an action
1499//   or resource on behalf of a user that doesn't have permissions to use the
1500//   action or resource, or specifying an identifier that is not valid.
1501//
1502//   * InvalidParameterException
1503//   The specified parameter is invalid. Review the available parameters for the
1504//   API request.
1505//
1506//   * ClusterNotFoundException
1507//   The specified cluster could not be found. You can view your available clusters
1508//   with ListClusters. Amazon ECS clusters are Region-specific.
1509//
1510// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeContainerInstances
1511func (c *ECS) DescribeContainerInstances(input *DescribeContainerInstancesInput) (*DescribeContainerInstancesOutput, error) {
1512	req, out := c.DescribeContainerInstancesRequest(input)
1513	return out, req.Send()
1514}
1515
1516// DescribeContainerInstancesWithContext is the same as DescribeContainerInstances with the addition of
1517// the ability to pass a context and additional request options.
1518//
1519// See DescribeContainerInstances for details on how to use this API operation.
1520//
1521// The context must be non-nil and will be used for request cancellation. If
1522// the context is nil a panic will occur. In the future the SDK may create
1523// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1524// for more information on using Contexts.
1525func (c *ECS) DescribeContainerInstancesWithContext(ctx aws.Context, input *DescribeContainerInstancesInput, opts ...request.Option) (*DescribeContainerInstancesOutput, error) {
1526	req, out := c.DescribeContainerInstancesRequest(input)
1527	req.SetContext(ctx)
1528	req.ApplyOptions(opts...)
1529	return out, req.Send()
1530}
1531
1532const opDescribeServices = "DescribeServices"
1533
1534// DescribeServicesRequest generates a "aws/request.Request" representing the
1535// client's request for the DescribeServices operation. The "output" return
1536// value will be populated with the request's response once the request completes
1537// successfully.
1538//
1539// Use "Send" method on the returned Request to send the API call to the service.
1540// the "output" return value is not valid until after Send returns without error.
1541//
1542// See DescribeServices for more information on using the DescribeServices
1543// API call, and error handling.
1544//
1545// This method is useful when you want to inject custom logic or configuration
1546// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1547//
1548//
1549//    // Example sending a request using the DescribeServicesRequest method.
1550//    req, resp := client.DescribeServicesRequest(params)
1551//
1552//    err := req.Send()
1553//    if err == nil { // resp is now filled
1554//        fmt.Println(resp)
1555//    }
1556//
1557// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeServices
1558func (c *ECS) DescribeServicesRequest(input *DescribeServicesInput) (req *request.Request, output *DescribeServicesOutput) {
1559	op := &request.Operation{
1560		Name:       opDescribeServices,
1561		HTTPMethod: "POST",
1562		HTTPPath:   "/",
1563	}
1564
1565	if input == nil {
1566		input = &DescribeServicesInput{}
1567	}
1568
1569	output = &DescribeServicesOutput{}
1570	req = c.newRequest(op, input, output)
1571	return
1572}
1573
1574// DescribeServices API operation for Amazon EC2 Container Service.
1575//
1576// Describes the specified services running in your cluster.
1577//
1578// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1579// with awserr.Error's Code and Message methods to get detailed information about
1580// the error.
1581//
1582// See the AWS API reference guide for Amazon EC2 Container Service's
1583// API operation DescribeServices for usage and error information.
1584//
1585// Returned Error Types:
1586//   * ServerException
1587//   These errors are usually caused by a server issue.
1588//
1589//   * ClientException
1590//   These errors are usually caused by a client action, such as using an action
1591//   or resource on behalf of a user that doesn't have permissions to use the
1592//   action or resource, or specifying an identifier that is not valid.
1593//
1594//   * InvalidParameterException
1595//   The specified parameter is invalid. Review the available parameters for the
1596//   API request.
1597//
1598//   * ClusterNotFoundException
1599//   The specified cluster could not be found. You can view your available clusters
1600//   with ListClusters. Amazon ECS clusters are Region-specific.
1601//
1602// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeServices
1603func (c *ECS) DescribeServices(input *DescribeServicesInput) (*DescribeServicesOutput, error) {
1604	req, out := c.DescribeServicesRequest(input)
1605	return out, req.Send()
1606}
1607
1608// DescribeServicesWithContext is the same as DescribeServices with the addition of
1609// the ability to pass a context and additional request options.
1610//
1611// See DescribeServices for details on how to use this API operation.
1612//
1613// The context must be non-nil and will be used for request cancellation. If
1614// the context is nil a panic will occur. In the future the SDK may create
1615// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1616// for more information on using Contexts.
1617func (c *ECS) DescribeServicesWithContext(ctx aws.Context, input *DescribeServicesInput, opts ...request.Option) (*DescribeServicesOutput, error) {
1618	req, out := c.DescribeServicesRequest(input)
1619	req.SetContext(ctx)
1620	req.ApplyOptions(opts...)
1621	return out, req.Send()
1622}
1623
1624const opDescribeTaskDefinition = "DescribeTaskDefinition"
1625
1626// DescribeTaskDefinitionRequest generates a "aws/request.Request" representing the
1627// client's request for the DescribeTaskDefinition operation. The "output" return
1628// value will be populated with the request's response once the request completes
1629// successfully.
1630//
1631// Use "Send" method on the returned Request to send the API call to the service.
1632// the "output" return value is not valid until after Send returns without error.
1633//
1634// See DescribeTaskDefinition for more information on using the DescribeTaskDefinition
1635// API call, and error handling.
1636//
1637// This method is useful when you want to inject custom logic or configuration
1638// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1639//
1640//
1641//    // Example sending a request using the DescribeTaskDefinitionRequest method.
1642//    req, resp := client.DescribeTaskDefinitionRequest(params)
1643//
1644//    err := req.Send()
1645//    if err == nil { // resp is now filled
1646//        fmt.Println(resp)
1647//    }
1648//
1649// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTaskDefinition
1650func (c *ECS) DescribeTaskDefinitionRequest(input *DescribeTaskDefinitionInput) (req *request.Request, output *DescribeTaskDefinitionOutput) {
1651	op := &request.Operation{
1652		Name:       opDescribeTaskDefinition,
1653		HTTPMethod: "POST",
1654		HTTPPath:   "/",
1655	}
1656
1657	if input == nil {
1658		input = &DescribeTaskDefinitionInput{}
1659	}
1660
1661	output = &DescribeTaskDefinitionOutput{}
1662	req = c.newRequest(op, input, output)
1663	return
1664}
1665
1666// DescribeTaskDefinition API operation for Amazon EC2 Container Service.
1667//
1668// Describes a task definition. You can specify a family and revision to find
1669// information about a specific task definition, or you can simply specify the
1670// family to find the latest ACTIVE revision in that family.
1671//
1672// You can only describe INACTIVE task definitions while an active task or service
1673// references them.
1674//
1675// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1676// with awserr.Error's Code and Message methods to get detailed information about
1677// the error.
1678//
1679// See the AWS API reference guide for Amazon EC2 Container Service's
1680// API operation DescribeTaskDefinition for usage and error information.
1681//
1682// Returned Error Types:
1683//   * ServerException
1684//   These errors are usually caused by a server issue.
1685//
1686//   * ClientException
1687//   These errors are usually caused by a client action, such as using an action
1688//   or resource on behalf of a user that doesn't have permissions to use the
1689//   action or resource, or specifying an identifier that is not valid.
1690//
1691//   * InvalidParameterException
1692//   The specified parameter is invalid. Review the available parameters for the
1693//   API request.
1694//
1695// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTaskDefinition
1696func (c *ECS) DescribeTaskDefinition(input *DescribeTaskDefinitionInput) (*DescribeTaskDefinitionOutput, error) {
1697	req, out := c.DescribeTaskDefinitionRequest(input)
1698	return out, req.Send()
1699}
1700
1701// DescribeTaskDefinitionWithContext is the same as DescribeTaskDefinition with the addition of
1702// the ability to pass a context and additional request options.
1703//
1704// See DescribeTaskDefinition for details on how to use this API operation.
1705//
1706// The context must be non-nil and will be used for request cancellation. If
1707// the context is nil a panic will occur. In the future the SDK may create
1708// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1709// for more information on using Contexts.
1710func (c *ECS) DescribeTaskDefinitionWithContext(ctx aws.Context, input *DescribeTaskDefinitionInput, opts ...request.Option) (*DescribeTaskDefinitionOutput, error) {
1711	req, out := c.DescribeTaskDefinitionRequest(input)
1712	req.SetContext(ctx)
1713	req.ApplyOptions(opts...)
1714	return out, req.Send()
1715}
1716
1717const opDescribeTaskSets = "DescribeTaskSets"
1718
1719// DescribeTaskSetsRequest generates a "aws/request.Request" representing the
1720// client's request for the DescribeTaskSets operation. The "output" return
1721// value will be populated with the request's response once the request completes
1722// successfully.
1723//
1724// Use "Send" method on the returned Request to send the API call to the service.
1725// the "output" return value is not valid until after Send returns without error.
1726//
1727// See DescribeTaskSets for more information on using the DescribeTaskSets
1728// API call, and error handling.
1729//
1730// This method is useful when you want to inject custom logic or configuration
1731// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1732//
1733//
1734//    // Example sending a request using the DescribeTaskSetsRequest method.
1735//    req, resp := client.DescribeTaskSetsRequest(params)
1736//
1737//    err := req.Send()
1738//    if err == nil { // resp is now filled
1739//        fmt.Println(resp)
1740//    }
1741//
1742// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTaskSets
1743func (c *ECS) DescribeTaskSetsRequest(input *DescribeTaskSetsInput) (req *request.Request, output *DescribeTaskSetsOutput) {
1744	op := &request.Operation{
1745		Name:       opDescribeTaskSets,
1746		HTTPMethod: "POST",
1747		HTTPPath:   "/",
1748	}
1749
1750	if input == nil {
1751		input = &DescribeTaskSetsInput{}
1752	}
1753
1754	output = &DescribeTaskSetsOutput{}
1755	req = c.newRequest(op, input, output)
1756	return
1757}
1758
1759// DescribeTaskSets API operation for Amazon EC2 Container Service.
1760//
1761// Describes the task sets in the specified cluster and service. This is used
1762// when a service uses the EXTERNAL deployment controller type. For more information,
1763// see Amazon ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
1764// in the Amazon Elastic Container Service Developer Guide.
1765//
1766// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1767// with awserr.Error's Code and Message methods to get detailed information about
1768// the error.
1769//
1770// See the AWS API reference guide for Amazon EC2 Container Service's
1771// API operation DescribeTaskSets for usage and error information.
1772//
1773// Returned Error Types:
1774//   * ServerException
1775//   These errors are usually caused by a server issue.
1776//
1777//   * ClientException
1778//   These errors are usually caused by a client action, such as using an action
1779//   or resource on behalf of a user that doesn't have permissions to use the
1780//   action or resource, or specifying an identifier that is not valid.
1781//
1782//   * InvalidParameterException
1783//   The specified parameter is invalid. Review the available parameters for the
1784//   API request.
1785//
1786//   * ClusterNotFoundException
1787//   The specified cluster could not be found. You can view your available clusters
1788//   with ListClusters. Amazon ECS clusters are Region-specific.
1789//
1790//   * UnsupportedFeatureException
1791//   The specified task is not supported in this Region.
1792//
1793//   * AccessDeniedException
1794//   You do not have authorization to perform the requested action.
1795//
1796//   * ServiceNotFoundException
1797//   The specified service could not be found. You can view your available services
1798//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
1799//
1800//   * ServiceNotActiveException
1801//   The specified service is not active. You can't update a service that is inactive.
1802//   If you have previously deleted a service, you can re-create it with CreateService.
1803//
1804// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTaskSets
1805func (c *ECS) DescribeTaskSets(input *DescribeTaskSetsInput) (*DescribeTaskSetsOutput, error) {
1806	req, out := c.DescribeTaskSetsRequest(input)
1807	return out, req.Send()
1808}
1809
1810// DescribeTaskSetsWithContext is the same as DescribeTaskSets with the addition of
1811// the ability to pass a context and additional request options.
1812//
1813// See DescribeTaskSets for details on how to use this API operation.
1814//
1815// The context must be non-nil and will be used for request cancellation. If
1816// the context is nil a panic will occur. In the future the SDK may create
1817// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1818// for more information on using Contexts.
1819func (c *ECS) DescribeTaskSetsWithContext(ctx aws.Context, input *DescribeTaskSetsInput, opts ...request.Option) (*DescribeTaskSetsOutput, error) {
1820	req, out := c.DescribeTaskSetsRequest(input)
1821	req.SetContext(ctx)
1822	req.ApplyOptions(opts...)
1823	return out, req.Send()
1824}
1825
1826const opDescribeTasks = "DescribeTasks"
1827
1828// DescribeTasksRequest generates a "aws/request.Request" representing the
1829// client's request for the DescribeTasks operation. The "output" return
1830// value will be populated with the request's response once the request completes
1831// successfully.
1832//
1833// Use "Send" method on the returned Request to send the API call to the service.
1834// the "output" return value is not valid until after Send returns without error.
1835//
1836// See DescribeTasks for more information on using the DescribeTasks
1837// API call, and error handling.
1838//
1839// This method is useful when you want to inject custom logic or configuration
1840// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1841//
1842//
1843//    // Example sending a request using the DescribeTasksRequest method.
1844//    req, resp := client.DescribeTasksRequest(params)
1845//
1846//    err := req.Send()
1847//    if err == nil { // resp is now filled
1848//        fmt.Println(resp)
1849//    }
1850//
1851// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTasks
1852func (c *ECS) DescribeTasksRequest(input *DescribeTasksInput) (req *request.Request, output *DescribeTasksOutput) {
1853	op := &request.Operation{
1854		Name:       opDescribeTasks,
1855		HTTPMethod: "POST",
1856		HTTPPath:   "/",
1857	}
1858
1859	if input == nil {
1860		input = &DescribeTasksInput{}
1861	}
1862
1863	output = &DescribeTasksOutput{}
1864	req = c.newRequest(op, input, output)
1865	return
1866}
1867
1868// DescribeTasks API operation for Amazon EC2 Container Service.
1869//
1870// Describes a specified task or tasks.
1871//
1872// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1873// with awserr.Error's Code and Message methods to get detailed information about
1874// the error.
1875//
1876// See the AWS API reference guide for Amazon EC2 Container Service's
1877// API operation DescribeTasks for usage and error information.
1878//
1879// Returned Error Types:
1880//   * ServerException
1881//   These errors are usually caused by a server issue.
1882//
1883//   * ClientException
1884//   These errors are usually caused by a client action, such as using an action
1885//   or resource on behalf of a user that doesn't have permissions to use the
1886//   action or resource, or specifying an identifier that is not valid.
1887//
1888//   * InvalidParameterException
1889//   The specified parameter is invalid. Review the available parameters for the
1890//   API request.
1891//
1892//   * ClusterNotFoundException
1893//   The specified cluster could not be found. You can view your available clusters
1894//   with ListClusters. Amazon ECS clusters are Region-specific.
1895//
1896// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DescribeTasks
1897func (c *ECS) DescribeTasks(input *DescribeTasksInput) (*DescribeTasksOutput, error) {
1898	req, out := c.DescribeTasksRequest(input)
1899	return out, req.Send()
1900}
1901
1902// DescribeTasksWithContext is the same as DescribeTasks with the addition of
1903// the ability to pass a context and additional request options.
1904//
1905// See DescribeTasks for details on how to use this API operation.
1906//
1907// The context must be non-nil and will be used for request cancellation. If
1908// the context is nil a panic will occur. In the future the SDK may create
1909// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1910// for more information on using Contexts.
1911func (c *ECS) DescribeTasksWithContext(ctx aws.Context, input *DescribeTasksInput, opts ...request.Option) (*DescribeTasksOutput, error) {
1912	req, out := c.DescribeTasksRequest(input)
1913	req.SetContext(ctx)
1914	req.ApplyOptions(opts...)
1915	return out, req.Send()
1916}
1917
1918const opDiscoverPollEndpoint = "DiscoverPollEndpoint"
1919
1920// DiscoverPollEndpointRequest generates a "aws/request.Request" representing the
1921// client's request for the DiscoverPollEndpoint operation. The "output" return
1922// value will be populated with the request's response once the request completes
1923// successfully.
1924//
1925// Use "Send" method on the returned Request to send the API call to the service.
1926// the "output" return value is not valid until after Send returns without error.
1927//
1928// See DiscoverPollEndpoint for more information on using the DiscoverPollEndpoint
1929// API call, and error handling.
1930//
1931// This method is useful when you want to inject custom logic or configuration
1932// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1933//
1934//
1935//    // Example sending a request using the DiscoverPollEndpointRequest method.
1936//    req, resp := client.DiscoverPollEndpointRequest(params)
1937//
1938//    err := req.Send()
1939//    if err == nil { // resp is now filled
1940//        fmt.Println(resp)
1941//    }
1942//
1943// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DiscoverPollEndpoint
1944func (c *ECS) DiscoverPollEndpointRequest(input *DiscoverPollEndpointInput) (req *request.Request, output *DiscoverPollEndpointOutput) {
1945	op := &request.Operation{
1946		Name:       opDiscoverPollEndpoint,
1947		HTTPMethod: "POST",
1948		HTTPPath:   "/",
1949	}
1950
1951	if input == nil {
1952		input = &DiscoverPollEndpointInput{}
1953	}
1954
1955	output = &DiscoverPollEndpointOutput{}
1956	req = c.newRequest(op, input, output)
1957	return
1958}
1959
1960// DiscoverPollEndpoint API operation for Amazon EC2 Container Service.
1961//
1962//
1963// This action is only used by the Amazon ECS agent, and it is not intended
1964// for use outside of the agent.
1965//
1966// Returns an endpoint for the Amazon ECS agent to poll for updates.
1967//
1968// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1969// with awserr.Error's Code and Message methods to get detailed information about
1970// the error.
1971//
1972// See the AWS API reference guide for Amazon EC2 Container Service's
1973// API operation DiscoverPollEndpoint for usage and error information.
1974//
1975// Returned Error Types:
1976//   * ServerException
1977//   These errors are usually caused by a server issue.
1978//
1979//   * ClientException
1980//   These errors are usually caused by a client action, such as using an action
1981//   or resource on behalf of a user that doesn't have permissions to use the
1982//   action or resource, or specifying an identifier that is not valid.
1983//
1984// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/DiscoverPollEndpoint
1985func (c *ECS) DiscoverPollEndpoint(input *DiscoverPollEndpointInput) (*DiscoverPollEndpointOutput, error) {
1986	req, out := c.DiscoverPollEndpointRequest(input)
1987	return out, req.Send()
1988}
1989
1990// DiscoverPollEndpointWithContext is the same as DiscoverPollEndpoint with the addition of
1991// the ability to pass a context and additional request options.
1992//
1993// See DiscoverPollEndpoint for details on how to use this API operation.
1994//
1995// The context must be non-nil and will be used for request cancellation. If
1996// the context is nil a panic will occur. In the future the SDK may create
1997// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1998// for more information on using Contexts.
1999func (c *ECS) DiscoverPollEndpointWithContext(ctx aws.Context, input *DiscoverPollEndpointInput, opts ...request.Option) (*DiscoverPollEndpointOutput, error) {
2000	req, out := c.DiscoverPollEndpointRequest(input)
2001	req.SetContext(ctx)
2002	req.ApplyOptions(opts...)
2003	return out, req.Send()
2004}
2005
2006const opListAccountSettings = "ListAccountSettings"
2007
2008// ListAccountSettingsRequest generates a "aws/request.Request" representing the
2009// client's request for the ListAccountSettings operation. The "output" return
2010// value will be populated with the request's response once the request completes
2011// successfully.
2012//
2013// Use "Send" method on the returned Request to send the API call to the service.
2014// the "output" return value is not valid until after Send returns without error.
2015//
2016// See ListAccountSettings for more information on using the ListAccountSettings
2017// API call, and error handling.
2018//
2019// This method is useful when you want to inject custom logic or configuration
2020// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2021//
2022//
2023//    // Example sending a request using the ListAccountSettingsRequest method.
2024//    req, resp := client.ListAccountSettingsRequest(params)
2025//
2026//    err := req.Send()
2027//    if err == nil { // resp is now filled
2028//        fmt.Println(resp)
2029//    }
2030//
2031// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListAccountSettings
2032func (c *ECS) ListAccountSettingsRequest(input *ListAccountSettingsInput) (req *request.Request, output *ListAccountSettingsOutput) {
2033	op := &request.Operation{
2034		Name:       opListAccountSettings,
2035		HTTPMethod: "POST",
2036		HTTPPath:   "/",
2037		Paginator: &request.Paginator{
2038			InputTokens:     []string{"nextToken"},
2039			OutputTokens:    []string{"nextToken"},
2040			LimitToken:      "maxResults",
2041			TruncationToken: "",
2042		},
2043	}
2044
2045	if input == nil {
2046		input = &ListAccountSettingsInput{}
2047	}
2048
2049	output = &ListAccountSettingsOutput{}
2050	req = c.newRequest(op, input, output)
2051	return
2052}
2053
2054// ListAccountSettings API operation for Amazon EC2 Container Service.
2055//
2056// Lists the account settings for a specified principal.
2057//
2058// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2059// with awserr.Error's Code and Message methods to get detailed information about
2060// the error.
2061//
2062// See the AWS API reference guide for Amazon EC2 Container Service's
2063// API operation ListAccountSettings for usage and error information.
2064//
2065// Returned Error Types:
2066//   * ServerException
2067//   These errors are usually caused by a server issue.
2068//
2069//   * ClientException
2070//   These errors are usually caused by a client action, such as using an action
2071//   or resource on behalf of a user that doesn't have permissions to use the
2072//   action or resource, or specifying an identifier that is not valid.
2073//
2074//   * InvalidParameterException
2075//   The specified parameter is invalid. Review the available parameters for the
2076//   API request.
2077//
2078// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListAccountSettings
2079func (c *ECS) ListAccountSettings(input *ListAccountSettingsInput) (*ListAccountSettingsOutput, error) {
2080	req, out := c.ListAccountSettingsRequest(input)
2081	return out, req.Send()
2082}
2083
2084// ListAccountSettingsWithContext is the same as ListAccountSettings with the addition of
2085// the ability to pass a context and additional request options.
2086//
2087// See ListAccountSettings for details on how to use this API operation.
2088//
2089// The context must be non-nil and will be used for request cancellation. If
2090// the context is nil a panic will occur. In the future the SDK may create
2091// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2092// for more information on using Contexts.
2093func (c *ECS) ListAccountSettingsWithContext(ctx aws.Context, input *ListAccountSettingsInput, opts ...request.Option) (*ListAccountSettingsOutput, error) {
2094	req, out := c.ListAccountSettingsRequest(input)
2095	req.SetContext(ctx)
2096	req.ApplyOptions(opts...)
2097	return out, req.Send()
2098}
2099
2100// ListAccountSettingsPages iterates over the pages of a ListAccountSettings operation,
2101// calling the "fn" function with the response data for each page. To stop
2102// iterating, return false from the fn function.
2103//
2104// See ListAccountSettings method for more information on how to use this operation.
2105//
2106// Note: This operation can generate multiple requests to a service.
2107//
2108//    // Example iterating over at most 3 pages of a ListAccountSettings operation.
2109//    pageNum := 0
2110//    err := client.ListAccountSettingsPages(params,
2111//        func(page *ecs.ListAccountSettingsOutput, lastPage bool) bool {
2112//            pageNum++
2113//            fmt.Println(page)
2114//            return pageNum <= 3
2115//        })
2116//
2117func (c *ECS) ListAccountSettingsPages(input *ListAccountSettingsInput, fn func(*ListAccountSettingsOutput, bool) bool) error {
2118	return c.ListAccountSettingsPagesWithContext(aws.BackgroundContext(), input, fn)
2119}
2120
2121// ListAccountSettingsPagesWithContext same as ListAccountSettingsPages except
2122// it takes a Context and allows setting request options on the pages.
2123//
2124// The context must be non-nil and will be used for request cancellation. If
2125// the context is nil a panic will occur. In the future the SDK may create
2126// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2127// for more information on using Contexts.
2128func (c *ECS) ListAccountSettingsPagesWithContext(ctx aws.Context, input *ListAccountSettingsInput, fn func(*ListAccountSettingsOutput, bool) bool, opts ...request.Option) error {
2129	p := request.Pagination{
2130		NewRequest: func() (*request.Request, error) {
2131			var inCpy *ListAccountSettingsInput
2132			if input != nil {
2133				tmp := *input
2134				inCpy = &tmp
2135			}
2136			req, _ := c.ListAccountSettingsRequest(inCpy)
2137			req.SetContext(ctx)
2138			req.ApplyOptions(opts...)
2139			return req, nil
2140		},
2141	}
2142
2143	for p.Next() {
2144		if !fn(p.Page().(*ListAccountSettingsOutput), !p.HasNextPage()) {
2145			break
2146		}
2147	}
2148
2149	return p.Err()
2150}
2151
2152const opListAttributes = "ListAttributes"
2153
2154// ListAttributesRequest generates a "aws/request.Request" representing the
2155// client's request for the ListAttributes operation. The "output" return
2156// value will be populated with the request's response once the request completes
2157// successfully.
2158//
2159// Use "Send" method on the returned Request to send the API call to the service.
2160// the "output" return value is not valid until after Send returns without error.
2161//
2162// See ListAttributes for more information on using the ListAttributes
2163// API call, and error handling.
2164//
2165// This method is useful when you want to inject custom logic or configuration
2166// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2167//
2168//
2169//    // Example sending a request using the ListAttributesRequest method.
2170//    req, resp := client.ListAttributesRequest(params)
2171//
2172//    err := req.Send()
2173//    if err == nil { // resp is now filled
2174//        fmt.Println(resp)
2175//    }
2176//
2177// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListAttributes
2178func (c *ECS) ListAttributesRequest(input *ListAttributesInput) (req *request.Request, output *ListAttributesOutput) {
2179	op := &request.Operation{
2180		Name:       opListAttributes,
2181		HTTPMethod: "POST",
2182		HTTPPath:   "/",
2183		Paginator: &request.Paginator{
2184			InputTokens:     []string{"nextToken"},
2185			OutputTokens:    []string{"nextToken"},
2186			LimitToken:      "maxResults",
2187			TruncationToken: "",
2188		},
2189	}
2190
2191	if input == nil {
2192		input = &ListAttributesInput{}
2193	}
2194
2195	output = &ListAttributesOutput{}
2196	req = c.newRequest(op, input, output)
2197	return
2198}
2199
2200// ListAttributes API operation for Amazon EC2 Container Service.
2201//
2202// Lists the attributes for Amazon ECS resources within a specified target type
2203// and cluster. When you specify a target type and cluster, ListAttributes returns
2204// a list of attribute objects, one for each attribute on each resource. You
2205// can filter the list of results to a single attribute name to only return
2206// results that have that name. You can also filter the results by attribute
2207// name and value, for example, to see which container instances in a cluster
2208// are running a Linux AMI (ecs.os-type=linux).
2209//
2210// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2211// with awserr.Error's Code and Message methods to get detailed information about
2212// the error.
2213//
2214// See the AWS API reference guide for Amazon EC2 Container Service's
2215// API operation ListAttributes for usage and error information.
2216//
2217// Returned Error Types:
2218//   * ClusterNotFoundException
2219//   The specified cluster could not be found. You can view your available clusters
2220//   with ListClusters. Amazon ECS clusters are Region-specific.
2221//
2222//   * InvalidParameterException
2223//   The specified parameter is invalid. Review the available parameters for the
2224//   API request.
2225//
2226// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListAttributes
2227func (c *ECS) ListAttributes(input *ListAttributesInput) (*ListAttributesOutput, error) {
2228	req, out := c.ListAttributesRequest(input)
2229	return out, req.Send()
2230}
2231
2232// ListAttributesWithContext is the same as ListAttributes with the addition of
2233// the ability to pass a context and additional request options.
2234//
2235// See ListAttributes for details on how to use this API operation.
2236//
2237// The context must be non-nil and will be used for request cancellation. If
2238// the context is nil a panic will occur. In the future the SDK may create
2239// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2240// for more information on using Contexts.
2241func (c *ECS) ListAttributesWithContext(ctx aws.Context, input *ListAttributesInput, opts ...request.Option) (*ListAttributesOutput, error) {
2242	req, out := c.ListAttributesRequest(input)
2243	req.SetContext(ctx)
2244	req.ApplyOptions(opts...)
2245	return out, req.Send()
2246}
2247
2248// ListAttributesPages iterates over the pages of a ListAttributes operation,
2249// calling the "fn" function with the response data for each page. To stop
2250// iterating, return false from the fn function.
2251//
2252// See ListAttributes method for more information on how to use this operation.
2253//
2254// Note: This operation can generate multiple requests to a service.
2255//
2256//    // Example iterating over at most 3 pages of a ListAttributes operation.
2257//    pageNum := 0
2258//    err := client.ListAttributesPages(params,
2259//        func(page *ecs.ListAttributesOutput, lastPage bool) bool {
2260//            pageNum++
2261//            fmt.Println(page)
2262//            return pageNum <= 3
2263//        })
2264//
2265func (c *ECS) ListAttributesPages(input *ListAttributesInput, fn func(*ListAttributesOutput, bool) bool) error {
2266	return c.ListAttributesPagesWithContext(aws.BackgroundContext(), input, fn)
2267}
2268
2269// ListAttributesPagesWithContext same as ListAttributesPages except
2270// it takes a Context and allows setting request options on the pages.
2271//
2272// The context must be non-nil and will be used for request cancellation. If
2273// the context is nil a panic will occur. In the future the SDK may create
2274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2275// for more information on using Contexts.
2276func (c *ECS) ListAttributesPagesWithContext(ctx aws.Context, input *ListAttributesInput, fn func(*ListAttributesOutput, bool) bool, opts ...request.Option) error {
2277	p := request.Pagination{
2278		NewRequest: func() (*request.Request, error) {
2279			var inCpy *ListAttributesInput
2280			if input != nil {
2281				tmp := *input
2282				inCpy = &tmp
2283			}
2284			req, _ := c.ListAttributesRequest(inCpy)
2285			req.SetContext(ctx)
2286			req.ApplyOptions(opts...)
2287			return req, nil
2288		},
2289	}
2290
2291	for p.Next() {
2292		if !fn(p.Page().(*ListAttributesOutput), !p.HasNextPage()) {
2293			break
2294		}
2295	}
2296
2297	return p.Err()
2298}
2299
2300const opListClusters = "ListClusters"
2301
2302// ListClustersRequest generates a "aws/request.Request" representing the
2303// client's request for the ListClusters operation. The "output" return
2304// value will be populated with the request's response once the request completes
2305// successfully.
2306//
2307// Use "Send" method on the returned Request to send the API call to the service.
2308// the "output" return value is not valid until after Send returns without error.
2309//
2310// See ListClusters for more information on using the ListClusters
2311// API call, and error handling.
2312//
2313// This method is useful when you want to inject custom logic or configuration
2314// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2315//
2316//
2317//    // Example sending a request using the ListClustersRequest method.
2318//    req, resp := client.ListClustersRequest(params)
2319//
2320//    err := req.Send()
2321//    if err == nil { // resp is now filled
2322//        fmt.Println(resp)
2323//    }
2324//
2325// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListClusters
2326func (c *ECS) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) {
2327	op := &request.Operation{
2328		Name:       opListClusters,
2329		HTTPMethod: "POST",
2330		HTTPPath:   "/",
2331		Paginator: &request.Paginator{
2332			InputTokens:     []string{"nextToken"},
2333			OutputTokens:    []string{"nextToken"},
2334			LimitToken:      "maxResults",
2335			TruncationToken: "",
2336		},
2337	}
2338
2339	if input == nil {
2340		input = &ListClustersInput{}
2341	}
2342
2343	output = &ListClustersOutput{}
2344	req = c.newRequest(op, input, output)
2345	return
2346}
2347
2348// ListClusters API operation for Amazon EC2 Container Service.
2349//
2350// Returns a list of existing clusters.
2351//
2352// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2353// with awserr.Error's Code and Message methods to get detailed information about
2354// the error.
2355//
2356// See the AWS API reference guide for Amazon EC2 Container Service's
2357// API operation ListClusters for usage and error information.
2358//
2359// Returned Error Types:
2360//   * ServerException
2361//   These errors are usually caused by a server issue.
2362//
2363//   * ClientException
2364//   These errors are usually caused by a client action, such as using an action
2365//   or resource on behalf of a user that doesn't have permissions to use the
2366//   action or resource, or specifying an identifier that is not valid.
2367//
2368//   * InvalidParameterException
2369//   The specified parameter is invalid. Review the available parameters for the
2370//   API request.
2371//
2372// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListClusters
2373func (c *ECS) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) {
2374	req, out := c.ListClustersRequest(input)
2375	return out, req.Send()
2376}
2377
2378// ListClustersWithContext is the same as ListClusters with the addition of
2379// the ability to pass a context and additional request options.
2380//
2381// See ListClusters for details on how to use this API operation.
2382//
2383// The context must be non-nil and will be used for request cancellation. If
2384// the context is nil a panic will occur. In the future the SDK may create
2385// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2386// for more information on using Contexts.
2387func (c *ECS) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) {
2388	req, out := c.ListClustersRequest(input)
2389	req.SetContext(ctx)
2390	req.ApplyOptions(opts...)
2391	return out, req.Send()
2392}
2393
2394// ListClustersPages iterates over the pages of a ListClusters operation,
2395// calling the "fn" function with the response data for each page. To stop
2396// iterating, return false from the fn function.
2397//
2398// See ListClusters method for more information on how to use this operation.
2399//
2400// Note: This operation can generate multiple requests to a service.
2401//
2402//    // Example iterating over at most 3 pages of a ListClusters operation.
2403//    pageNum := 0
2404//    err := client.ListClustersPages(params,
2405//        func(page *ecs.ListClustersOutput, lastPage bool) bool {
2406//            pageNum++
2407//            fmt.Println(page)
2408//            return pageNum <= 3
2409//        })
2410//
2411func (c *ECS) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error {
2412	return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2413}
2414
2415// ListClustersPagesWithContext same as ListClustersPages except
2416// it takes a Context and allows setting request options on the pages.
2417//
2418// The context must be non-nil and will be used for request cancellation. If
2419// the context is nil a panic will occur. In the future the SDK may create
2420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2421// for more information on using Contexts.
2422func (c *ECS) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error {
2423	p := request.Pagination{
2424		NewRequest: func() (*request.Request, error) {
2425			var inCpy *ListClustersInput
2426			if input != nil {
2427				tmp := *input
2428				inCpy = &tmp
2429			}
2430			req, _ := c.ListClustersRequest(inCpy)
2431			req.SetContext(ctx)
2432			req.ApplyOptions(opts...)
2433			return req, nil
2434		},
2435	}
2436
2437	for p.Next() {
2438		if !fn(p.Page().(*ListClustersOutput), !p.HasNextPage()) {
2439			break
2440		}
2441	}
2442
2443	return p.Err()
2444}
2445
2446const opListContainerInstances = "ListContainerInstances"
2447
2448// ListContainerInstancesRequest generates a "aws/request.Request" representing the
2449// client's request for the ListContainerInstances operation. The "output" return
2450// value will be populated with the request's response once the request completes
2451// successfully.
2452//
2453// Use "Send" method on the returned Request to send the API call to the service.
2454// the "output" return value is not valid until after Send returns without error.
2455//
2456// See ListContainerInstances for more information on using the ListContainerInstances
2457// API call, and error handling.
2458//
2459// This method is useful when you want to inject custom logic or configuration
2460// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2461//
2462//
2463//    // Example sending a request using the ListContainerInstancesRequest method.
2464//    req, resp := client.ListContainerInstancesRequest(params)
2465//
2466//    err := req.Send()
2467//    if err == nil { // resp is now filled
2468//        fmt.Println(resp)
2469//    }
2470//
2471// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListContainerInstances
2472func (c *ECS) ListContainerInstancesRequest(input *ListContainerInstancesInput) (req *request.Request, output *ListContainerInstancesOutput) {
2473	op := &request.Operation{
2474		Name:       opListContainerInstances,
2475		HTTPMethod: "POST",
2476		HTTPPath:   "/",
2477		Paginator: &request.Paginator{
2478			InputTokens:     []string{"nextToken"},
2479			OutputTokens:    []string{"nextToken"},
2480			LimitToken:      "maxResults",
2481			TruncationToken: "",
2482		},
2483	}
2484
2485	if input == nil {
2486		input = &ListContainerInstancesInput{}
2487	}
2488
2489	output = &ListContainerInstancesOutput{}
2490	req = c.newRequest(op, input, output)
2491	return
2492}
2493
2494// ListContainerInstances API operation for Amazon EC2 Container Service.
2495//
2496// Returns a list of container instances in a specified cluster. You can filter
2497// the results of a ListContainerInstances operation with cluster query language
2498// statements inside the filter parameter. For more information, see Cluster
2499// Query Language (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html)
2500// in the Amazon Elastic Container Service Developer Guide.
2501//
2502// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2503// with awserr.Error's Code and Message methods to get detailed information about
2504// the error.
2505//
2506// See the AWS API reference guide for Amazon EC2 Container Service's
2507// API operation ListContainerInstances for usage and error information.
2508//
2509// Returned Error Types:
2510//   * ServerException
2511//   These errors are usually caused by a server issue.
2512//
2513//   * ClientException
2514//   These errors are usually caused by a client action, such as using an action
2515//   or resource on behalf of a user that doesn't have permissions to use the
2516//   action or resource, or specifying an identifier that is not valid.
2517//
2518//   * InvalidParameterException
2519//   The specified parameter is invalid. Review the available parameters for the
2520//   API request.
2521//
2522//   * ClusterNotFoundException
2523//   The specified cluster could not be found. You can view your available clusters
2524//   with ListClusters. Amazon ECS clusters are Region-specific.
2525//
2526// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListContainerInstances
2527func (c *ECS) ListContainerInstances(input *ListContainerInstancesInput) (*ListContainerInstancesOutput, error) {
2528	req, out := c.ListContainerInstancesRequest(input)
2529	return out, req.Send()
2530}
2531
2532// ListContainerInstancesWithContext is the same as ListContainerInstances with the addition of
2533// the ability to pass a context and additional request options.
2534//
2535// See ListContainerInstances for details on how to use this API operation.
2536//
2537// The context must be non-nil and will be used for request cancellation. If
2538// the context is nil a panic will occur. In the future the SDK may create
2539// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2540// for more information on using Contexts.
2541func (c *ECS) ListContainerInstancesWithContext(ctx aws.Context, input *ListContainerInstancesInput, opts ...request.Option) (*ListContainerInstancesOutput, error) {
2542	req, out := c.ListContainerInstancesRequest(input)
2543	req.SetContext(ctx)
2544	req.ApplyOptions(opts...)
2545	return out, req.Send()
2546}
2547
2548// ListContainerInstancesPages iterates over the pages of a ListContainerInstances operation,
2549// calling the "fn" function with the response data for each page. To stop
2550// iterating, return false from the fn function.
2551//
2552// See ListContainerInstances method for more information on how to use this operation.
2553//
2554// Note: This operation can generate multiple requests to a service.
2555//
2556//    // Example iterating over at most 3 pages of a ListContainerInstances operation.
2557//    pageNum := 0
2558//    err := client.ListContainerInstancesPages(params,
2559//        func(page *ecs.ListContainerInstancesOutput, lastPage bool) bool {
2560//            pageNum++
2561//            fmt.Println(page)
2562//            return pageNum <= 3
2563//        })
2564//
2565func (c *ECS) ListContainerInstancesPages(input *ListContainerInstancesInput, fn func(*ListContainerInstancesOutput, bool) bool) error {
2566	return c.ListContainerInstancesPagesWithContext(aws.BackgroundContext(), input, fn)
2567}
2568
2569// ListContainerInstancesPagesWithContext same as ListContainerInstancesPages except
2570// it takes a Context and allows setting request options on the pages.
2571//
2572// The context must be non-nil and will be used for request cancellation. If
2573// the context is nil a panic will occur. In the future the SDK may create
2574// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2575// for more information on using Contexts.
2576func (c *ECS) ListContainerInstancesPagesWithContext(ctx aws.Context, input *ListContainerInstancesInput, fn func(*ListContainerInstancesOutput, bool) bool, opts ...request.Option) error {
2577	p := request.Pagination{
2578		NewRequest: func() (*request.Request, error) {
2579			var inCpy *ListContainerInstancesInput
2580			if input != nil {
2581				tmp := *input
2582				inCpy = &tmp
2583			}
2584			req, _ := c.ListContainerInstancesRequest(inCpy)
2585			req.SetContext(ctx)
2586			req.ApplyOptions(opts...)
2587			return req, nil
2588		},
2589	}
2590
2591	for p.Next() {
2592		if !fn(p.Page().(*ListContainerInstancesOutput), !p.HasNextPage()) {
2593			break
2594		}
2595	}
2596
2597	return p.Err()
2598}
2599
2600const opListServices = "ListServices"
2601
2602// ListServicesRequest generates a "aws/request.Request" representing the
2603// client's request for the ListServices operation. The "output" return
2604// value will be populated with the request's response once the request completes
2605// successfully.
2606//
2607// Use "Send" method on the returned Request to send the API call to the service.
2608// the "output" return value is not valid until after Send returns without error.
2609//
2610// See ListServices for more information on using the ListServices
2611// API call, and error handling.
2612//
2613// This method is useful when you want to inject custom logic or configuration
2614// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2615//
2616//
2617//    // Example sending a request using the ListServicesRequest method.
2618//    req, resp := client.ListServicesRequest(params)
2619//
2620//    err := req.Send()
2621//    if err == nil { // resp is now filled
2622//        fmt.Println(resp)
2623//    }
2624//
2625// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListServices
2626func (c *ECS) ListServicesRequest(input *ListServicesInput) (req *request.Request, output *ListServicesOutput) {
2627	op := &request.Operation{
2628		Name:       opListServices,
2629		HTTPMethod: "POST",
2630		HTTPPath:   "/",
2631		Paginator: &request.Paginator{
2632			InputTokens:     []string{"nextToken"},
2633			OutputTokens:    []string{"nextToken"},
2634			LimitToken:      "maxResults",
2635			TruncationToken: "",
2636		},
2637	}
2638
2639	if input == nil {
2640		input = &ListServicesInput{}
2641	}
2642
2643	output = &ListServicesOutput{}
2644	req = c.newRequest(op, input, output)
2645	return
2646}
2647
2648// ListServices API operation for Amazon EC2 Container Service.
2649//
2650// Lists the services that are running in a specified cluster.
2651//
2652// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2653// with awserr.Error's Code and Message methods to get detailed information about
2654// the error.
2655//
2656// See the AWS API reference guide for Amazon EC2 Container Service's
2657// API operation ListServices for usage and error information.
2658//
2659// Returned Error Types:
2660//   * ServerException
2661//   These errors are usually caused by a server issue.
2662//
2663//   * ClientException
2664//   These errors are usually caused by a client action, such as using an action
2665//   or resource on behalf of a user that doesn't have permissions to use the
2666//   action or resource, or specifying an identifier that is not valid.
2667//
2668//   * InvalidParameterException
2669//   The specified parameter is invalid. Review the available parameters for the
2670//   API request.
2671//
2672//   * ClusterNotFoundException
2673//   The specified cluster could not be found. You can view your available clusters
2674//   with ListClusters. Amazon ECS clusters are Region-specific.
2675//
2676// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListServices
2677func (c *ECS) ListServices(input *ListServicesInput) (*ListServicesOutput, error) {
2678	req, out := c.ListServicesRequest(input)
2679	return out, req.Send()
2680}
2681
2682// ListServicesWithContext is the same as ListServices with the addition of
2683// the ability to pass a context and additional request options.
2684//
2685// See ListServices for details on how to use this API operation.
2686//
2687// The context must be non-nil and will be used for request cancellation. If
2688// the context is nil a panic will occur. In the future the SDK may create
2689// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2690// for more information on using Contexts.
2691func (c *ECS) ListServicesWithContext(ctx aws.Context, input *ListServicesInput, opts ...request.Option) (*ListServicesOutput, error) {
2692	req, out := c.ListServicesRequest(input)
2693	req.SetContext(ctx)
2694	req.ApplyOptions(opts...)
2695	return out, req.Send()
2696}
2697
2698// ListServicesPages iterates over the pages of a ListServices operation,
2699// calling the "fn" function with the response data for each page. To stop
2700// iterating, return false from the fn function.
2701//
2702// See ListServices method for more information on how to use this operation.
2703//
2704// Note: This operation can generate multiple requests to a service.
2705//
2706//    // Example iterating over at most 3 pages of a ListServices operation.
2707//    pageNum := 0
2708//    err := client.ListServicesPages(params,
2709//        func(page *ecs.ListServicesOutput, lastPage bool) bool {
2710//            pageNum++
2711//            fmt.Println(page)
2712//            return pageNum <= 3
2713//        })
2714//
2715func (c *ECS) ListServicesPages(input *ListServicesInput, fn func(*ListServicesOutput, bool) bool) error {
2716	return c.ListServicesPagesWithContext(aws.BackgroundContext(), input, fn)
2717}
2718
2719// ListServicesPagesWithContext same as ListServicesPages except
2720// it takes a Context and allows setting request options on the pages.
2721//
2722// The context must be non-nil and will be used for request cancellation. If
2723// the context is nil a panic will occur. In the future the SDK may create
2724// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2725// for more information on using Contexts.
2726func (c *ECS) ListServicesPagesWithContext(ctx aws.Context, input *ListServicesInput, fn func(*ListServicesOutput, bool) bool, opts ...request.Option) error {
2727	p := request.Pagination{
2728		NewRequest: func() (*request.Request, error) {
2729			var inCpy *ListServicesInput
2730			if input != nil {
2731				tmp := *input
2732				inCpy = &tmp
2733			}
2734			req, _ := c.ListServicesRequest(inCpy)
2735			req.SetContext(ctx)
2736			req.ApplyOptions(opts...)
2737			return req, nil
2738		},
2739	}
2740
2741	for p.Next() {
2742		if !fn(p.Page().(*ListServicesOutput), !p.HasNextPage()) {
2743			break
2744		}
2745	}
2746
2747	return p.Err()
2748}
2749
2750const opListTagsForResource = "ListTagsForResource"
2751
2752// ListTagsForResourceRequest generates a "aws/request.Request" representing the
2753// client's request for the ListTagsForResource operation. The "output" return
2754// value will be populated with the request's response once the request completes
2755// successfully.
2756//
2757// Use "Send" method on the returned Request to send the API call to the service.
2758// the "output" return value is not valid until after Send returns without error.
2759//
2760// See ListTagsForResource for more information on using the ListTagsForResource
2761// API call, and error handling.
2762//
2763// This method is useful when you want to inject custom logic or configuration
2764// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2765//
2766//
2767//    // Example sending a request using the ListTagsForResourceRequest method.
2768//    req, resp := client.ListTagsForResourceRequest(params)
2769//
2770//    err := req.Send()
2771//    if err == nil { // resp is now filled
2772//        fmt.Println(resp)
2773//    }
2774//
2775// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTagsForResource
2776func (c *ECS) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
2777	op := &request.Operation{
2778		Name:       opListTagsForResource,
2779		HTTPMethod: "POST",
2780		HTTPPath:   "/",
2781	}
2782
2783	if input == nil {
2784		input = &ListTagsForResourceInput{}
2785	}
2786
2787	output = &ListTagsForResourceOutput{}
2788	req = c.newRequest(op, input, output)
2789	return
2790}
2791
2792// ListTagsForResource API operation for Amazon EC2 Container Service.
2793//
2794// List the tags for an Amazon ECS resource.
2795//
2796// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2797// with awserr.Error's Code and Message methods to get detailed information about
2798// the error.
2799//
2800// See the AWS API reference guide for Amazon EC2 Container Service's
2801// API operation ListTagsForResource for usage and error information.
2802//
2803// Returned Error Types:
2804//   * ServerException
2805//   These errors are usually caused by a server issue.
2806//
2807//   * ClientException
2808//   These errors are usually caused by a client action, such as using an action
2809//   or resource on behalf of a user that doesn't have permissions to use the
2810//   action or resource, or specifying an identifier that is not valid.
2811//
2812//   * ClusterNotFoundException
2813//   The specified cluster could not be found. You can view your available clusters
2814//   with ListClusters. Amazon ECS clusters are Region-specific.
2815//
2816//   * InvalidParameterException
2817//   The specified parameter is invalid. Review the available parameters for the
2818//   API request.
2819//
2820// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTagsForResource
2821func (c *ECS) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
2822	req, out := c.ListTagsForResourceRequest(input)
2823	return out, req.Send()
2824}
2825
2826// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
2827// the ability to pass a context and additional request options.
2828//
2829// See ListTagsForResource 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 *ECS) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
2836	req, out := c.ListTagsForResourceRequest(input)
2837	req.SetContext(ctx)
2838	req.ApplyOptions(opts...)
2839	return out, req.Send()
2840}
2841
2842const opListTaskDefinitionFamilies = "ListTaskDefinitionFamilies"
2843
2844// ListTaskDefinitionFamiliesRequest generates a "aws/request.Request" representing the
2845// client's request for the ListTaskDefinitionFamilies 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 ListTaskDefinitionFamilies for more information on using the ListTaskDefinitionFamilies
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 ListTaskDefinitionFamiliesRequest method.
2860//    req, resp := client.ListTaskDefinitionFamiliesRequest(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/ecs-2014-11-13/ListTaskDefinitionFamilies
2868func (c *ECS) ListTaskDefinitionFamiliesRequest(input *ListTaskDefinitionFamiliesInput) (req *request.Request, output *ListTaskDefinitionFamiliesOutput) {
2869	op := &request.Operation{
2870		Name:       opListTaskDefinitionFamilies,
2871		HTTPMethod: "POST",
2872		HTTPPath:   "/",
2873		Paginator: &request.Paginator{
2874			InputTokens:     []string{"nextToken"},
2875			OutputTokens:    []string{"nextToken"},
2876			LimitToken:      "maxResults",
2877			TruncationToken: "",
2878		},
2879	}
2880
2881	if input == nil {
2882		input = &ListTaskDefinitionFamiliesInput{}
2883	}
2884
2885	output = &ListTaskDefinitionFamiliesOutput{}
2886	req = c.newRequest(op, input, output)
2887	return
2888}
2889
2890// ListTaskDefinitionFamilies API operation for Amazon EC2 Container Service.
2891//
2892// Returns a list of task definition families that are registered to your account
2893// (which may include task definition families that no longer have any ACTIVE
2894// task definition revisions).
2895//
2896// You can filter out task definition families that do not contain any ACTIVE
2897// task definition revisions by setting the status parameter to ACTIVE. You
2898// can also filter the results with the familyPrefix parameter.
2899//
2900// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2901// with awserr.Error's Code and Message methods to get detailed information about
2902// the error.
2903//
2904// See the AWS API reference guide for Amazon EC2 Container Service's
2905// API operation ListTaskDefinitionFamilies for usage and error information.
2906//
2907// Returned Error Types:
2908//   * ServerException
2909//   These errors are usually caused by a server issue.
2910//
2911//   * ClientException
2912//   These errors are usually caused by a client action, such as using an action
2913//   or resource on behalf of a user that doesn't have permissions to use the
2914//   action or resource, or specifying an identifier that is not valid.
2915//
2916//   * InvalidParameterException
2917//   The specified parameter is invalid. Review the available parameters for the
2918//   API request.
2919//
2920// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTaskDefinitionFamilies
2921func (c *ECS) ListTaskDefinitionFamilies(input *ListTaskDefinitionFamiliesInput) (*ListTaskDefinitionFamiliesOutput, error) {
2922	req, out := c.ListTaskDefinitionFamiliesRequest(input)
2923	return out, req.Send()
2924}
2925
2926// ListTaskDefinitionFamiliesWithContext is the same as ListTaskDefinitionFamilies with the addition of
2927// the ability to pass a context and additional request options.
2928//
2929// See ListTaskDefinitionFamilies for details on how to use this API operation.
2930//
2931// The context must be non-nil and will be used for request cancellation. If
2932// the context is nil a panic will occur. In the future the SDK may create
2933// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2934// for more information on using Contexts.
2935func (c *ECS) ListTaskDefinitionFamiliesWithContext(ctx aws.Context, input *ListTaskDefinitionFamiliesInput, opts ...request.Option) (*ListTaskDefinitionFamiliesOutput, error) {
2936	req, out := c.ListTaskDefinitionFamiliesRequest(input)
2937	req.SetContext(ctx)
2938	req.ApplyOptions(opts...)
2939	return out, req.Send()
2940}
2941
2942// ListTaskDefinitionFamiliesPages iterates over the pages of a ListTaskDefinitionFamilies operation,
2943// calling the "fn" function with the response data for each page. To stop
2944// iterating, return false from the fn function.
2945//
2946// See ListTaskDefinitionFamilies method for more information on how to use this operation.
2947//
2948// Note: This operation can generate multiple requests to a service.
2949//
2950//    // Example iterating over at most 3 pages of a ListTaskDefinitionFamilies operation.
2951//    pageNum := 0
2952//    err := client.ListTaskDefinitionFamiliesPages(params,
2953//        func(page *ecs.ListTaskDefinitionFamiliesOutput, lastPage bool) bool {
2954//            pageNum++
2955//            fmt.Println(page)
2956//            return pageNum <= 3
2957//        })
2958//
2959func (c *ECS) ListTaskDefinitionFamiliesPages(input *ListTaskDefinitionFamiliesInput, fn func(*ListTaskDefinitionFamiliesOutput, bool) bool) error {
2960	return c.ListTaskDefinitionFamiliesPagesWithContext(aws.BackgroundContext(), input, fn)
2961}
2962
2963// ListTaskDefinitionFamiliesPagesWithContext same as ListTaskDefinitionFamiliesPages except
2964// it takes a Context and allows setting request options on the pages.
2965//
2966// The context must be non-nil and will be used for request cancellation. If
2967// the context is nil a panic will occur. In the future the SDK may create
2968// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2969// for more information on using Contexts.
2970func (c *ECS) ListTaskDefinitionFamiliesPagesWithContext(ctx aws.Context, input *ListTaskDefinitionFamiliesInput, fn func(*ListTaskDefinitionFamiliesOutput, bool) bool, opts ...request.Option) error {
2971	p := request.Pagination{
2972		NewRequest: func() (*request.Request, error) {
2973			var inCpy *ListTaskDefinitionFamiliesInput
2974			if input != nil {
2975				tmp := *input
2976				inCpy = &tmp
2977			}
2978			req, _ := c.ListTaskDefinitionFamiliesRequest(inCpy)
2979			req.SetContext(ctx)
2980			req.ApplyOptions(opts...)
2981			return req, nil
2982		},
2983	}
2984
2985	for p.Next() {
2986		if !fn(p.Page().(*ListTaskDefinitionFamiliesOutput), !p.HasNextPage()) {
2987			break
2988		}
2989	}
2990
2991	return p.Err()
2992}
2993
2994const opListTaskDefinitions = "ListTaskDefinitions"
2995
2996// ListTaskDefinitionsRequest generates a "aws/request.Request" representing the
2997// client's request for the ListTaskDefinitions operation. The "output" return
2998// value will be populated with the request's response once the request completes
2999// successfully.
3000//
3001// Use "Send" method on the returned Request to send the API call to the service.
3002// the "output" return value is not valid until after Send returns without error.
3003//
3004// See ListTaskDefinitions for more information on using the ListTaskDefinitions
3005// API call, and error handling.
3006//
3007// This method is useful when you want to inject custom logic or configuration
3008// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3009//
3010//
3011//    // Example sending a request using the ListTaskDefinitionsRequest method.
3012//    req, resp := client.ListTaskDefinitionsRequest(params)
3013//
3014//    err := req.Send()
3015//    if err == nil { // resp is now filled
3016//        fmt.Println(resp)
3017//    }
3018//
3019// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTaskDefinitions
3020func (c *ECS) ListTaskDefinitionsRequest(input *ListTaskDefinitionsInput) (req *request.Request, output *ListTaskDefinitionsOutput) {
3021	op := &request.Operation{
3022		Name:       opListTaskDefinitions,
3023		HTTPMethod: "POST",
3024		HTTPPath:   "/",
3025		Paginator: &request.Paginator{
3026			InputTokens:     []string{"nextToken"},
3027			OutputTokens:    []string{"nextToken"},
3028			LimitToken:      "maxResults",
3029			TruncationToken: "",
3030		},
3031	}
3032
3033	if input == nil {
3034		input = &ListTaskDefinitionsInput{}
3035	}
3036
3037	output = &ListTaskDefinitionsOutput{}
3038	req = c.newRequest(op, input, output)
3039	return
3040}
3041
3042// ListTaskDefinitions API operation for Amazon EC2 Container Service.
3043//
3044// Returns a list of task definitions that are registered to your account. You
3045// can filter the results by family name with the familyPrefix parameter or
3046// by status with the status parameter.
3047//
3048// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3049// with awserr.Error's Code and Message methods to get detailed information about
3050// the error.
3051//
3052// See the AWS API reference guide for Amazon EC2 Container Service's
3053// API operation ListTaskDefinitions for usage and error information.
3054//
3055// Returned Error Types:
3056//   * ServerException
3057//   These errors are usually caused by a server issue.
3058//
3059//   * ClientException
3060//   These errors are usually caused by a client action, such as using an action
3061//   or resource on behalf of a user that doesn't have permissions to use the
3062//   action or resource, or specifying an identifier that is not valid.
3063//
3064//   * InvalidParameterException
3065//   The specified parameter is invalid. Review the available parameters for the
3066//   API request.
3067//
3068// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTaskDefinitions
3069func (c *ECS) ListTaskDefinitions(input *ListTaskDefinitionsInput) (*ListTaskDefinitionsOutput, error) {
3070	req, out := c.ListTaskDefinitionsRequest(input)
3071	return out, req.Send()
3072}
3073
3074// ListTaskDefinitionsWithContext is the same as ListTaskDefinitions with the addition of
3075// the ability to pass a context and additional request options.
3076//
3077// See ListTaskDefinitions for details on how to use this API operation.
3078//
3079// The context must be non-nil and will be used for request cancellation. If
3080// the context is nil a panic will occur. In the future the SDK may create
3081// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3082// for more information on using Contexts.
3083func (c *ECS) ListTaskDefinitionsWithContext(ctx aws.Context, input *ListTaskDefinitionsInput, opts ...request.Option) (*ListTaskDefinitionsOutput, error) {
3084	req, out := c.ListTaskDefinitionsRequest(input)
3085	req.SetContext(ctx)
3086	req.ApplyOptions(opts...)
3087	return out, req.Send()
3088}
3089
3090// ListTaskDefinitionsPages iterates over the pages of a ListTaskDefinitions operation,
3091// calling the "fn" function with the response data for each page. To stop
3092// iterating, return false from the fn function.
3093//
3094// See ListTaskDefinitions method for more information on how to use this operation.
3095//
3096// Note: This operation can generate multiple requests to a service.
3097//
3098//    // Example iterating over at most 3 pages of a ListTaskDefinitions operation.
3099//    pageNum := 0
3100//    err := client.ListTaskDefinitionsPages(params,
3101//        func(page *ecs.ListTaskDefinitionsOutput, lastPage bool) bool {
3102//            pageNum++
3103//            fmt.Println(page)
3104//            return pageNum <= 3
3105//        })
3106//
3107func (c *ECS) ListTaskDefinitionsPages(input *ListTaskDefinitionsInput, fn func(*ListTaskDefinitionsOutput, bool) bool) error {
3108	return c.ListTaskDefinitionsPagesWithContext(aws.BackgroundContext(), input, fn)
3109}
3110
3111// ListTaskDefinitionsPagesWithContext same as ListTaskDefinitionsPages except
3112// it takes a Context and allows setting request options on the pages.
3113//
3114// The context must be non-nil and will be used for request cancellation. If
3115// the context is nil a panic will occur. In the future the SDK may create
3116// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3117// for more information on using Contexts.
3118func (c *ECS) ListTaskDefinitionsPagesWithContext(ctx aws.Context, input *ListTaskDefinitionsInput, fn func(*ListTaskDefinitionsOutput, bool) bool, opts ...request.Option) error {
3119	p := request.Pagination{
3120		NewRequest: func() (*request.Request, error) {
3121			var inCpy *ListTaskDefinitionsInput
3122			if input != nil {
3123				tmp := *input
3124				inCpy = &tmp
3125			}
3126			req, _ := c.ListTaskDefinitionsRequest(inCpy)
3127			req.SetContext(ctx)
3128			req.ApplyOptions(opts...)
3129			return req, nil
3130		},
3131	}
3132
3133	for p.Next() {
3134		if !fn(p.Page().(*ListTaskDefinitionsOutput), !p.HasNextPage()) {
3135			break
3136		}
3137	}
3138
3139	return p.Err()
3140}
3141
3142const opListTasks = "ListTasks"
3143
3144// ListTasksRequest generates a "aws/request.Request" representing the
3145// client's request for the ListTasks operation. The "output" return
3146// value will be populated with the request's response once the request completes
3147// successfully.
3148//
3149// Use "Send" method on the returned Request to send the API call to the service.
3150// the "output" return value is not valid until after Send returns without error.
3151//
3152// See ListTasks for more information on using the ListTasks
3153// API call, and error handling.
3154//
3155// This method is useful when you want to inject custom logic or configuration
3156// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3157//
3158//
3159//    // Example sending a request using the ListTasksRequest method.
3160//    req, resp := client.ListTasksRequest(params)
3161//
3162//    err := req.Send()
3163//    if err == nil { // resp is now filled
3164//        fmt.Println(resp)
3165//    }
3166//
3167// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTasks
3168func (c *ECS) ListTasksRequest(input *ListTasksInput) (req *request.Request, output *ListTasksOutput) {
3169	op := &request.Operation{
3170		Name:       opListTasks,
3171		HTTPMethod: "POST",
3172		HTTPPath:   "/",
3173		Paginator: &request.Paginator{
3174			InputTokens:     []string{"nextToken"},
3175			OutputTokens:    []string{"nextToken"},
3176			LimitToken:      "maxResults",
3177			TruncationToken: "",
3178		},
3179	}
3180
3181	if input == nil {
3182		input = &ListTasksInput{}
3183	}
3184
3185	output = &ListTasksOutput{}
3186	req = c.newRequest(op, input, output)
3187	return
3188}
3189
3190// ListTasks API operation for Amazon EC2 Container Service.
3191//
3192// Returns a list of tasks for a specified cluster. You can filter the results
3193// by family name, by a particular container instance, or by the desired status
3194// of the task with the family, containerInstance, and desiredStatus parameters.
3195//
3196// Recently stopped tasks might appear in the returned results. Currently, stopped
3197// tasks appear in the returned results for at least one hour.
3198//
3199// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3200// with awserr.Error's Code and Message methods to get detailed information about
3201// the error.
3202//
3203// See the AWS API reference guide for Amazon EC2 Container Service's
3204// API operation ListTasks for usage and error information.
3205//
3206// Returned Error Types:
3207//   * ServerException
3208//   These errors are usually caused by a server issue.
3209//
3210//   * ClientException
3211//   These errors are usually caused by a client action, such as using an action
3212//   or resource on behalf of a user that doesn't have permissions to use the
3213//   action or resource, or specifying an identifier that is not valid.
3214//
3215//   * InvalidParameterException
3216//   The specified parameter is invalid. Review the available parameters for the
3217//   API request.
3218//
3219//   * ClusterNotFoundException
3220//   The specified cluster could not be found. You can view your available clusters
3221//   with ListClusters. Amazon ECS clusters are Region-specific.
3222//
3223//   * ServiceNotFoundException
3224//   The specified service could not be found. You can view your available services
3225//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
3226//
3227// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/ListTasks
3228func (c *ECS) ListTasks(input *ListTasksInput) (*ListTasksOutput, error) {
3229	req, out := c.ListTasksRequest(input)
3230	return out, req.Send()
3231}
3232
3233// ListTasksWithContext is the same as ListTasks with the addition of
3234// the ability to pass a context and additional request options.
3235//
3236// See ListTasks for details on how to use this API operation.
3237//
3238// The context must be non-nil and will be used for request cancellation. If
3239// the context is nil a panic will occur. In the future the SDK may create
3240// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3241// for more information on using Contexts.
3242func (c *ECS) ListTasksWithContext(ctx aws.Context, input *ListTasksInput, opts ...request.Option) (*ListTasksOutput, error) {
3243	req, out := c.ListTasksRequest(input)
3244	req.SetContext(ctx)
3245	req.ApplyOptions(opts...)
3246	return out, req.Send()
3247}
3248
3249// ListTasksPages iterates over the pages of a ListTasks operation,
3250// calling the "fn" function with the response data for each page. To stop
3251// iterating, return false from the fn function.
3252//
3253// See ListTasks method for more information on how to use this operation.
3254//
3255// Note: This operation can generate multiple requests to a service.
3256//
3257//    // Example iterating over at most 3 pages of a ListTasks operation.
3258//    pageNum := 0
3259//    err := client.ListTasksPages(params,
3260//        func(page *ecs.ListTasksOutput, lastPage bool) bool {
3261//            pageNum++
3262//            fmt.Println(page)
3263//            return pageNum <= 3
3264//        })
3265//
3266func (c *ECS) ListTasksPages(input *ListTasksInput, fn func(*ListTasksOutput, bool) bool) error {
3267	return c.ListTasksPagesWithContext(aws.BackgroundContext(), input, fn)
3268}
3269
3270// ListTasksPagesWithContext same as ListTasksPages except
3271// it takes a Context and allows setting request options on the pages.
3272//
3273// The context must be non-nil and will be used for request cancellation. If
3274// the context is nil a panic will occur. In the future the SDK may create
3275// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3276// for more information on using Contexts.
3277func (c *ECS) ListTasksPagesWithContext(ctx aws.Context, input *ListTasksInput, fn func(*ListTasksOutput, bool) bool, opts ...request.Option) error {
3278	p := request.Pagination{
3279		NewRequest: func() (*request.Request, error) {
3280			var inCpy *ListTasksInput
3281			if input != nil {
3282				tmp := *input
3283				inCpy = &tmp
3284			}
3285			req, _ := c.ListTasksRequest(inCpy)
3286			req.SetContext(ctx)
3287			req.ApplyOptions(opts...)
3288			return req, nil
3289		},
3290	}
3291
3292	for p.Next() {
3293		if !fn(p.Page().(*ListTasksOutput), !p.HasNextPage()) {
3294			break
3295		}
3296	}
3297
3298	return p.Err()
3299}
3300
3301const opPutAccountSetting = "PutAccountSetting"
3302
3303// PutAccountSettingRequest generates a "aws/request.Request" representing the
3304// client's request for the PutAccountSetting operation. The "output" return
3305// value will be populated with the request's response once the request completes
3306// successfully.
3307//
3308// Use "Send" method on the returned Request to send the API call to the service.
3309// the "output" return value is not valid until after Send returns without error.
3310//
3311// See PutAccountSetting for more information on using the PutAccountSetting
3312// API call, and error handling.
3313//
3314// This method is useful when you want to inject custom logic or configuration
3315// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3316//
3317//
3318//    // Example sending a request using the PutAccountSettingRequest method.
3319//    req, resp := client.PutAccountSettingRequest(params)
3320//
3321//    err := req.Send()
3322//    if err == nil { // resp is now filled
3323//        fmt.Println(resp)
3324//    }
3325//
3326// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSetting
3327func (c *ECS) PutAccountSettingRequest(input *PutAccountSettingInput) (req *request.Request, output *PutAccountSettingOutput) {
3328	op := &request.Operation{
3329		Name:       opPutAccountSetting,
3330		HTTPMethod: "POST",
3331		HTTPPath:   "/",
3332	}
3333
3334	if input == nil {
3335		input = &PutAccountSettingInput{}
3336	}
3337
3338	output = &PutAccountSettingOutput{}
3339	req = c.newRequest(op, input, output)
3340	return
3341}
3342
3343// PutAccountSetting API operation for Amazon EC2 Container Service.
3344//
3345// Modifies an account setting. Account settings are set on a per-Region basis.
3346//
3347// If you change the account setting for the root user, the default settings
3348// for all of the IAM users and roles for which no individual account setting
3349// has been specified are reset. For more information, see Account Settings
3350// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html)
3351// in the Amazon Elastic Container Service Developer Guide.
3352//
3353// When serviceLongArnFormat, taskLongArnFormat, or containerInstanceLongArnFormat
3354// are specified, the Amazon Resource Name (ARN) and resource ID format of the
3355// resource type for a specified IAM user, IAM role, or the root user for an
3356// account is affected. The opt-in and opt-out account setting must be set for
3357// each Amazon ECS resource separately. The ARN and resource ID format of a
3358// resource will be defined by the opt-in status of the IAM user or role that
3359// created the resource. You must enable this setting to use Amazon ECS features
3360// such as resource tagging.
3361//
3362// When awsvpcTrunking is specified, the elastic network interface (ENI) limit
3363// for any new container instances that support the feature is changed. If awsvpcTrunking
3364// is enabled, any new container instances that support the feature are launched
3365// have the increased ENI limits available to them. For more information, see
3366// Elastic Network Interface Trunking (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html)
3367// in the Amazon Elastic Container Service Developer Guide.
3368//
3369// When containerInsights is specified, the default setting indicating whether
3370// CloudWatch Container Insights is enabled for your clusters is changed. If
3371// containerInsights is enabled, any new clusters that are created will have
3372// Container Insights enabled unless you disable it during cluster creation.
3373// For more information, see CloudWatch Container Insights (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html)
3374// in the Amazon Elastic Container Service Developer Guide.
3375//
3376// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3377// with awserr.Error's Code and Message methods to get detailed information about
3378// the error.
3379//
3380// See the AWS API reference guide for Amazon EC2 Container Service's
3381// API operation PutAccountSetting for usage and error information.
3382//
3383// Returned Error Types:
3384//   * ServerException
3385//   These errors are usually caused by a server issue.
3386//
3387//   * ClientException
3388//   These errors are usually caused by a client action, such as using an action
3389//   or resource on behalf of a user that doesn't have permissions to use the
3390//   action or resource, or specifying an identifier that is not valid.
3391//
3392//   * InvalidParameterException
3393//   The specified parameter is invalid. Review the available parameters for the
3394//   API request.
3395//
3396// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSetting
3397func (c *ECS) PutAccountSetting(input *PutAccountSettingInput) (*PutAccountSettingOutput, error) {
3398	req, out := c.PutAccountSettingRequest(input)
3399	return out, req.Send()
3400}
3401
3402// PutAccountSettingWithContext is the same as PutAccountSetting with the addition of
3403// the ability to pass a context and additional request options.
3404//
3405// See PutAccountSetting for details on how to use this API operation.
3406//
3407// The context must be non-nil and will be used for request cancellation. If
3408// the context is nil a panic will occur. In the future the SDK may create
3409// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3410// for more information on using Contexts.
3411func (c *ECS) PutAccountSettingWithContext(ctx aws.Context, input *PutAccountSettingInput, opts ...request.Option) (*PutAccountSettingOutput, error) {
3412	req, out := c.PutAccountSettingRequest(input)
3413	req.SetContext(ctx)
3414	req.ApplyOptions(opts...)
3415	return out, req.Send()
3416}
3417
3418const opPutAccountSettingDefault = "PutAccountSettingDefault"
3419
3420// PutAccountSettingDefaultRequest generates a "aws/request.Request" representing the
3421// client's request for the PutAccountSettingDefault operation. The "output" return
3422// value will be populated with the request's response once the request completes
3423// successfully.
3424//
3425// Use "Send" method on the returned Request to send the API call to the service.
3426// the "output" return value is not valid until after Send returns without error.
3427//
3428// See PutAccountSettingDefault for more information on using the PutAccountSettingDefault
3429// API call, and error handling.
3430//
3431// This method is useful when you want to inject custom logic or configuration
3432// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3433//
3434//
3435//    // Example sending a request using the PutAccountSettingDefaultRequest method.
3436//    req, resp := client.PutAccountSettingDefaultRequest(params)
3437//
3438//    err := req.Send()
3439//    if err == nil { // resp is now filled
3440//        fmt.Println(resp)
3441//    }
3442//
3443// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSettingDefault
3444func (c *ECS) PutAccountSettingDefaultRequest(input *PutAccountSettingDefaultInput) (req *request.Request, output *PutAccountSettingDefaultOutput) {
3445	op := &request.Operation{
3446		Name:       opPutAccountSettingDefault,
3447		HTTPMethod: "POST",
3448		HTTPPath:   "/",
3449	}
3450
3451	if input == nil {
3452		input = &PutAccountSettingDefaultInput{}
3453	}
3454
3455	output = &PutAccountSettingDefaultOutput{}
3456	req = c.newRequest(op, input, output)
3457	return
3458}
3459
3460// PutAccountSettingDefault API operation for Amazon EC2 Container Service.
3461//
3462// Modifies an account setting for all IAM users on an account for whom no individual
3463// account setting has been specified. Account settings are set on a per-Region
3464// basis.
3465//
3466// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3467// with awserr.Error's Code and Message methods to get detailed information about
3468// the error.
3469//
3470// See the AWS API reference guide for Amazon EC2 Container Service's
3471// API operation PutAccountSettingDefault for usage and error information.
3472//
3473// Returned Error Types:
3474//   * ServerException
3475//   These errors are usually caused by a server issue.
3476//
3477//   * ClientException
3478//   These errors are usually caused by a client action, such as using an action
3479//   or resource on behalf of a user that doesn't have permissions to use the
3480//   action or resource, or specifying an identifier that is not valid.
3481//
3482//   * InvalidParameterException
3483//   The specified parameter is invalid. Review the available parameters for the
3484//   API request.
3485//
3486// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAccountSettingDefault
3487func (c *ECS) PutAccountSettingDefault(input *PutAccountSettingDefaultInput) (*PutAccountSettingDefaultOutput, error) {
3488	req, out := c.PutAccountSettingDefaultRequest(input)
3489	return out, req.Send()
3490}
3491
3492// PutAccountSettingDefaultWithContext is the same as PutAccountSettingDefault with the addition of
3493// the ability to pass a context and additional request options.
3494//
3495// See PutAccountSettingDefault for details on how to use this API operation.
3496//
3497// The context must be non-nil and will be used for request cancellation. If
3498// the context is nil a panic will occur. In the future the SDK may create
3499// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3500// for more information on using Contexts.
3501func (c *ECS) PutAccountSettingDefaultWithContext(ctx aws.Context, input *PutAccountSettingDefaultInput, opts ...request.Option) (*PutAccountSettingDefaultOutput, error) {
3502	req, out := c.PutAccountSettingDefaultRequest(input)
3503	req.SetContext(ctx)
3504	req.ApplyOptions(opts...)
3505	return out, req.Send()
3506}
3507
3508const opPutAttributes = "PutAttributes"
3509
3510// PutAttributesRequest generates a "aws/request.Request" representing the
3511// client's request for the PutAttributes operation. The "output" return
3512// value will be populated with the request's response once the request completes
3513// successfully.
3514//
3515// Use "Send" method on the returned Request to send the API call to the service.
3516// the "output" return value is not valid until after Send returns without error.
3517//
3518// See PutAttributes for more information on using the PutAttributes
3519// API call, and error handling.
3520//
3521// This method is useful when you want to inject custom logic or configuration
3522// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3523//
3524//
3525//    // Example sending a request using the PutAttributesRequest method.
3526//    req, resp := client.PutAttributesRequest(params)
3527//
3528//    err := req.Send()
3529//    if err == nil { // resp is now filled
3530//        fmt.Println(resp)
3531//    }
3532//
3533// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAttributes
3534func (c *ECS) PutAttributesRequest(input *PutAttributesInput) (req *request.Request, output *PutAttributesOutput) {
3535	op := &request.Operation{
3536		Name:       opPutAttributes,
3537		HTTPMethod: "POST",
3538		HTTPPath:   "/",
3539	}
3540
3541	if input == nil {
3542		input = &PutAttributesInput{}
3543	}
3544
3545	output = &PutAttributesOutput{}
3546	req = c.newRequest(op, input, output)
3547	return
3548}
3549
3550// PutAttributes API operation for Amazon EC2 Container Service.
3551//
3552// Create or update an attribute on an Amazon ECS resource. If the attribute
3553// does not exist, it is created. If the attribute exists, its value is replaced
3554// with the specified value. To delete an attribute, use DeleteAttributes. For
3555// more information, see Attributes (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes)
3556// in the Amazon Elastic Container Service Developer Guide.
3557//
3558// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3559// with awserr.Error's Code and Message methods to get detailed information about
3560// the error.
3561//
3562// See the AWS API reference guide for Amazon EC2 Container Service's
3563// API operation PutAttributes for usage and error information.
3564//
3565// Returned Error Types:
3566//   * ClusterNotFoundException
3567//   The specified cluster could not be found. You can view your available clusters
3568//   with ListClusters. Amazon ECS clusters are Region-specific.
3569//
3570//   * TargetNotFoundException
3571//   The specified target could not be found. You can view your available container
3572//   instances with ListContainerInstances. Amazon ECS container instances are
3573//   cluster-specific and Region-specific.
3574//
3575//   * AttributeLimitExceededException
3576//   You can apply up to 10 custom attributes per resource. You can view the attributes
3577//   of a resource with ListAttributes. You can remove existing attributes on
3578//   a resource with DeleteAttributes.
3579//
3580//   * InvalidParameterException
3581//   The specified parameter is invalid. Review the available parameters for the
3582//   API request.
3583//
3584// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutAttributes
3585func (c *ECS) PutAttributes(input *PutAttributesInput) (*PutAttributesOutput, error) {
3586	req, out := c.PutAttributesRequest(input)
3587	return out, req.Send()
3588}
3589
3590// PutAttributesWithContext is the same as PutAttributes with the addition of
3591// the ability to pass a context and additional request options.
3592//
3593// See PutAttributes for details on how to use this API operation.
3594//
3595// The context must be non-nil and will be used for request cancellation. If
3596// the context is nil a panic will occur. In the future the SDK may create
3597// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3598// for more information on using Contexts.
3599func (c *ECS) PutAttributesWithContext(ctx aws.Context, input *PutAttributesInput, opts ...request.Option) (*PutAttributesOutput, error) {
3600	req, out := c.PutAttributesRequest(input)
3601	req.SetContext(ctx)
3602	req.ApplyOptions(opts...)
3603	return out, req.Send()
3604}
3605
3606const opPutClusterCapacityProviders = "PutClusterCapacityProviders"
3607
3608// PutClusterCapacityProvidersRequest generates a "aws/request.Request" representing the
3609// client's request for the PutClusterCapacityProviders operation. The "output" return
3610// value will be populated with the request's response once the request completes
3611// successfully.
3612//
3613// Use "Send" method on the returned Request to send the API call to the service.
3614// the "output" return value is not valid until after Send returns without error.
3615//
3616// See PutClusterCapacityProviders for more information on using the PutClusterCapacityProviders
3617// API call, and error handling.
3618//
3619// This method is useful when you want to inject custom logic or configuration
3620// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3621//
3622//
3623//    // Example sending a request using the PutClusterCapacityProvidersRequest method.
3624//    req, resp := client.PutClusterCapacityProvidersRequest(params)
3625//
3626//    err := req.Send()
3627//    if err == nil { // resp is now filled
3628//        fmt.Println(resp)
3629//    }
3630//
3631// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutClusterCapacityProviders
3632func (c *ECS) PutClusterCapacityProvidersRequest(input *PutClusterCapacityProvidersInput) (req *request.Request, output *PutClusterCapacityProvidersOutput) {
3633	op := &request.Operation{
3634		Name:       opPutClusterCapacityProviders,
3635		HTTPMethod: "POST",
3636		HTTPPath:   "/",
3637	}
3638
3639	if input == nil {
3640		input = &PutClusterCapacityProvidersInput{}
3641	}
3642
3643	output = &PutClusterCapacityProvidersOutput{}
3644	req = c.newRequest(op, input, output)
3645	return
3646}
3647
3648// PutClusterCapacityProviders API operation for Amazon EC2 Container Service.
3649//
3650// Modifies the available capacity providers and the default capacity provider
3651// strategy for a cluster.
3652//
3653// You must specify both the available capacity providers and a default capacity
3654// provider strategy for the cluster. If the specified cluster has existing
3655// capacity providers associated with it, you must specify all existing capacity
3656// providers in addition to any new ones you want to add. Any existing capacity
3657// providers associated with a cluster that are omitted from a PutClusterCapacityProviders
3658// API call will be disassociated with the cluster. You can only disassociate
3659// an existing capacity provider from a cluster if it's not being used by any
3660// existing tasks.
3661//
3662// When creating a service or running a task on a cluster, if no capacity provider
3663// or launch type is specified, then the cluster's default capacity provider
3664// strategy is used. It is recommended to define a default capacity provider
3665// strategy for your cluster, however you may specify an empty array ([]) to
3666// bypass defining a default strategy.
3667//
3668// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3669// with awserr.Error's Code and Message methods to get detailed information about
3670// the error.
3671//
3672// See the AWS API reference guide for Amazon EC2 Container Service's
3673// API operation PutClusterCapacityProviders for usage and error information.
3674//
3675// Returned Error Types:
3676//   * ServerException
3677//   These errors are usually caused by a server issue.
3678//
3679//   * ClientException
3680//   These errors are usually caused by a client action, such as using an action
3681//   or resource on behalf of a user that doesn't have permissions to use the
3682//   action or resource, or specifying an identifier that is not valid.
3683//
3684//   * InvalidParameterException
3685//   The specified parameter is invalid. Review the available parameters for the
3686//   API request.
3687//
3688//   * ClusterNotFoundException
3689//   The specified cluster could not be found. You can view your available clusters
3690//   with ListClusters. Amazon ECS clusters are Region-specific.
3691//
3692//   * ResourceInUseException
3693//   The specified resource is in-use and cannot be removed.
3694//
3695//   * UpdateInProgressException
3696//   There is already a current Amazon ECS container agent update in progress
3697//   on the specified container instance. If the container agent becomes disconnected
3698//   while it is in a transitional stage, such as PENDING or STAGING, the update
3699//   process can get stuck in that state. However, when the agent reconnects,
3700//   it resumes where it stopped previously.
3701//
3702// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PutClusterCapacityProviders
3703func (c *ECS) PutClusterCapacityProviders(input *PutClusterCapacityProvidersInput) (*PutClusterCapacityProvidersOutput, error) {
3704	req, out := c.PutClusterCapacityProvidersRequest(input)
3705	return out, req.Send()
3706}
3707
3708// PutClusterCapacityProvidersWithContext is the same as PutClusterCapacityProviders with the addition of
3709// the ability to pass a context and additional request options.
3710//
3711// See PutClusterCapacityProviders for details on how to use this API operation.
3712//
3713// The context must be non-nil and will be used for request cancellation. If
3714// the context is nil a panic will occur. In the future the SDK may create
3715// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3716// for more information on using Contexts.
3717func (c *ECS) PutClusterCapacityProvidersWithContext(ctx aws.Context, input *PutClusterCapacityProvidersInput, opts ...request.Option) (*PutClusterCapacityProvidersOutput, error) {
3718	req, out := c.PutClusterCapacityProvidersRequest(input)
3719	req.SetContext(ctx)
3720	req.ApplyOptions(opts...)
3721	return out, req.Send()
3722}
3723
3724const opRegisterContainerInstance = "RegisterContainerInstance"
3725
3726// RegisterContainerInstanceRequest generates a "aws/request.Request" representing the
3727// client's request for the RegisterContainerInstance operation. The "output" return
3728// value will be populated with the request's response once the request completes
3729// successfully.
3730//
3731// Use "Send" method on the returned Request to send the API call to the service.
3732// the "output" return value is not valid until after Send returns without error.
3733//
3734// See RegisterContainerInstance for more information on using the RegisterContainerInstance
3735// API call, and error handling.
3736//
3737// This method is useful when you want to inject custom logic or configuration
3738// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3739//
3740//
3741//    // Example sending a request using the RegisterContainerInstanceRequest method.
3742//    req, resp := client.RegisterContainerInstanceRequest(params)
3743//
3744//    err := req.Send()
3745//    if err == nil { // resp is now filled
3746//        fmt.Println(resp)
3747//    }
3748//
3749// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RegisterContainerInstance
3750func (c *ECS) RegisterContainerInstanceRequest(input *RegisterContainerInstanceInput) (req *request.Request, output *RegisterContainerInstanceOutput) {
3751	op := &request.Operation{
3752		Name:       opRegisterContainerInstance,
3753		HTTPMethod: "POST",
3754		HTTPPath:   "/",
3755	}
3756
3757	if input == nil {
3758		input = &RegisterContainerInstanceInput{}
3759	}
3760
3761	output = &RegisterContainerInstanceOutput{}
3762	req = c.newRequest(op, input, output)
3763	return
3764}
3765
3766// RegisterContainerInstance API operation for Amazon EC2 Container Service.
3767//
3768//
3769// This action is only used by the Amazon ECS agent, and it is not intended
3770// for use outside of the agent.
3771//
3772// Registers an EC2 instance into the specified cluster. This instance becomes
3773// available to place containers on.
3774//
3775// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3776// with awserr.Error's Code and Message methods to get detailed information about
3777// the error.
3778//
3779// See the AWS API reference guide for Amazon EC2 Container Service's
3780// API operation RegisterContainerInstance for usage and error information.
3781//
3782// Returned Error Types:
3783//   * ServerException
3784//   These errors are usually caused by a server issue.
3785//
3786//   * ClientException
3787//   These errors are usually caused by a client action, such as using an action
3788//   or resource on behalf of a user that doesn't have permissions to use the
3789//   action or resource, or specifying an identifier that is not valid.
3790//
3791//   * InvalidParameterException
3792//   The specified parameter is invalid. Review the available parameters for the
3793//   API request.
3794//
3795// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RegisterContainerInstance
3796func (c *ECS) RegisterContainerInstance(input *RegisterContainerInstanceInput) (*RegisterContainerInstanceOutput, error) {
3797	req, out := c.RegisterContainerInstanceRequest(input)
3798	return out, req.Send()
3799}
3800
3801// RegisterContainerInstanceWithContext is the same as RegisterContainerInstance with the addition of
3802// the ability to pass a context and additional request options.
3803//
3804// See RegisterContainerInstance for details on how to use this API operation.
3805//
3806// The context must be non-nil and will be used for request cancellation. If
3807// the context is nil a panic will occur. In the future the SDK may create
3808// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3809// for more information on using Contexts.
3810func (c *ECS) RegisterContainerInstanceWithContext(ctx aws.Context, input *RegisterContainerInstanceInput, opts ...request.Option) (*RegisterContainerInstanceOutput, error) {
3811	req, out := c.RegisterContainerInstanceRequest(input)
3812	req.SetContext(ctx)
3813	req.ApplyOptions(opts...)
3814	return out, req.Send()
3815}
3816
3817const opRegisterTaskDefinition = "RegisterTaskDefinition"
3818
3819// RegisterTaskDefinitionRequest generates a "aws/request.Request" representing the
3820// client's request for the RegisterTaskDefinition operation. The "output" return
3821// value will be populated with the request's response once the request completes
3822// successfully.
3823//
3824// Use "Send" method on the returned Request to send the API call to the service.
3825// the "output" return value is not valid until after Send returns without error.
3826//
3827// See RegisterTaskDefinition for more information on using the RegisterTaskDefinition
3828// API call, and error handling.
3829//
3830// This method is useful when you want to inject custom logic or configuration
3831// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3832//
3833//
3834//    // Example sending a request using the RegisterTaskDefinitionRequest method.
3835//    req, resp := client.RegisterTaskDefinitionRequest(params)
3836//
3837//    err := req.Send()
3838//    if err == nil { // resp is now filled
3839//        fmt.Println(resp)
3840//    }
3841//
3842// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RegisterTaskDefinition
3843func (c *ECS) RegisterTaskDefinitionRequest(input *RegisterTaskDefinitionInput) (req *request.Request, output *RegisterTaskDefinitionOutput) {
3844	op := &request.Operation{
3845		Name:       opRegisterTaskDefinition,
3846		HTTPMethod: "POST",
3847		HTTPPath:   "/",
3848	}
3849
3850	if input == nil {
3851		input = &RegisterTaskDefinitionInput{}
3852	}
3853
3854	output = &RegisterTaskDefinitionOutput{}
3855	req = c.newRequest(op, input, output)
3856	return
3857}
3858
3859// RegisterTaskDefinition API operation for Amazon EC2 Container Service.
3860//
3861// Registers a new task definition from the supplied family and containerDefinitions.
3862// Optionally, you can add data volumes to your containers with the volumes
3863// parameter. For more information about task definition parameters and defaults,
3864// see Amazon ECS Task Definitions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html)
3865// in the Amazon Elastic Container Service Developer Guide.
3866//
3867// You can specify an IAM role for your task with the taskRoleArn parameter.
3868// When you specify an IAM role for a task, its containers can then use the
3869// latest versions of the AWS CLI or SDKs to make API requests to the AWS services
3870// that are specified in the IAM policy associated with the role. For more information,
3871// see IAM Roles for Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)
3872// in the Amazon Elastic Container Service Developer Guide.
3873//
3874// You can specify a Docker networking mode for the containers in your task
3875// definition with the networkMode parameter. The available network modes correspond
3876// to those described in Network settings (https://docs.docker.com/engine/reference/run/#/network-settings)
3877// in the Docker run reference. If you specify the awsvpc network mode, the
3878// task is allocated an elastic network interface, and you must specify a NetworkConfiguration
3879// when you create a service or run a task with the task definition. For more
3880// information, see Task Networking (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
3881// in the Amazon Elastic Container Service Developer Guide.
3882//
3883// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3884// with awserr.Error's Code and Message methods to get detailed information about
3885// the error.
3886//
3887// See the AWS API reference guide for Amazon EC2 Container Service's
3888// API operation RegisterTaskDefinition for usage and error information.
3889//
3890// Returned Error Types:
3891//   * ServerException
3892//   These errors are usually caused by a server issue.
3893//
3894//   * ClientException
3895//   These errors are usually caused by a client action, such as using an action
3896//   or resource on behalf of a user that doesn't have permissions to use the
3897//   action or resource, or specifying an identifier that is not valid.
3898//
3899//   * InvalidParameterException
3900//   The specified parameter is invalid. Review the available parameters for the
3901//   API request.
3902//
3903// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RegisterTaskDefinition
3904func (c *ECS) RegisterTaskDefinition(input *RegisterTaskDefinitionInput) (*RegisterTaskDefinitionOutput, error) {
3905	req, out := c.RegisterTaskDefinitionRequest(input)
3906	return out, req.Send()
3907}
3908
3909// RegisterTaskDefinitionWithContext is the same as RegisterTaskDefinition with the addition of
3910// the ability to pass a context and additional request options.
3911//
3912// See RegisterTaskDefinition for details on how to use this API operation.
3913//
3914// The context must be non-nil and will be used for request cancellation. If
3915// the context is nil a panic will occur. In the future the SDK may create
3916// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3917// for more information on using Contexts.
3918func (c *ECS) RegisterTaskDefinitionWithContext(ctx aws.Context, input *RegisterTaskDefinitionInput, opts ...request.Option) (*RegisterTaskDefinitionOutput, error) {
3919	req, out := c.RegisterTaskDefinitionRequest(input)
3920	req.SetContext(ctx)
3921	req.ApplyOptions(opts...)
3922	return out, req.Send()
3923}
3924
3925const opRunTask = "RunTask"
3926
3927// RunTaskRequest generates a "aws/request.Request" representing the
3928// client's request for the RunTask operation. The "output" return
3929// value will be populated with the request's response once the request completes
3930// successfully.
3931//
3932// Use "Send" method on the returned Request to send the API call to the service.
3933// the "output" return value is not valid until after Send returns without error.
3934//
3935// See RunTask for more information on using the RunTask
3936// API call, and error handling.
3937//
3938// This method is useful when you want to inject custom logic or configuration
3939// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3940//
3941//
3942//    // Example sending a request using the RunTaskRequest method.
3943//    req, resp := client.RunTaskRequest(params)
3944//
3945//    err := req.Send()
3946//    if err == nil { // resp is now filled
3947//        fmt.Println(resp)
3948//    }
3949//
3950// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RunTask
3951func (c *ECS) RunTaskRequest(input *RunTaskInput) (req *request.Request, output *RunTaskOutput) {
3952	op := &request.Operation{
3953		Name:       opRunTask,
3954		HTTPMethod: "POST",
3955		HTTPPath:   "/",
3956	}
3957
3958	if input == nil {
3959		input = &RunTaskInput{}
3960	}
3961
3962	output = &RunTaskOutput{}
3963	req = c.newRequest(op, input, output)
3964	return
3965}
3966
3967// RunTask API operation for Amazon EC2 Container Service.
3968//
3969// Starts a new task using the specified task definition.
3970//
3971// You can allow Amazon ECS to place tasks for you, or you can customize how
3972// Amazon ECS places tasks using placement constraints and placement strategies.
3973// For more information, see Scheduling Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html)
3974// in the Amazon Elastic Container Service Developer Guide.
3975//
3976// Alternatively, you can use StartTask to use your own scheduler or place tasks
3977// manually on specific container instances.
3978//
3979// The Amazon ECS API follows an eventual consistency model, due to the distributed
3980// nature of the system supporting the API. This means that the result of an
3981// API command you run that affects your Amazon ECS resources might not be immediately
3982// visible to all subsequent commands you run. Keep this in mind when you carry
3983// out an API command that immediately follows a previous API command.
3984//
3985// To manage eventual consistency, you can do the following:
3986//
3987//    * Confirm the state of the resource before you run a command to modify
3988//    it. Run the DescribeTasks command using an exponential backoff algorithm
3989//    to ensure that you allow enough time for the previous command to propagate
3990//    through the system. To do this, run the DescribeTasks command repeatedly,
3991//    starting with a couple of seconds of wait time and increasing gradually
3992//    up to five minutes of wait time.
3993//
3994//    * Add wait time between subsequent commands, even if the DescribeTasks
3995//    command returns an accurate response. Apply an exponential backoff algorithm
3996//    starting with a couple of seconds of wait time, and increase gradually
3997//    up to about five minutes of wait time.
3998//
3999// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4000// with awserr.Error's Code and Message methods to get detailed information about
4001// the error.
4002//
4003// See the AWS API reference guide for Amazon EC2 Container Service's
4004// API operation RunTask for usage and error information.
4005//
4006// Returned Error Types:
4007//   * ServerException
4008//   These errors are usually caused by a server issue.
4009//
4010//   * ClientException
4011//   These errors are usually caused by a client action, such as using an action
4012//   or resource on behalf of a user that doesn't have permissions to use the
4013//   action or resource, or specifying an identifier that is not valid.
4014//
4015//   * InvalidParameterException
4016//   The specified parameter is invalid. Review the available parameters for the
4017//   API request.
4018//
4019//   * ClusterNotFoundException
4020//   The specified cluster could not be found. You can view your available clusters
4021//   with ListClusters. Amazon ECS clusters are Region-specific.
4022//
4023//   * UnsupportedFeatureException
4024//   The specified task is not supported in this Region.
4025//
4026//   * PlatformUnknownException
4027//   The specified platform version does not exist.
4028//
4029//   * PlatformTaskDefinitionIncompatibilityException
4030//   The specified platform version does not satisfy the task definition's required
4031//   capabilities.
4032//
4033//   * AccessDeniedException
4034//   You do not have authorization to perform the requested action.
4035//
4036//   * BlockedException
4037//   Your AWS account has been blocked. For more information, contact AWS Support
4038//   (http://aws.amazon.com/contact-us/).
4039//
4040// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/RunTask
4041func (c *ECS) RunTask(input *RunTaskInput) (*RunTaskOutput, error) {
4042	req, out := c.RunTaskRequest(input)
4043	return out, req.Send()
4044}
4045
4046// RunTaskWithContext is the same as RunTask with the addition of
4047// the ability to pass a context and additional request options.
4048//
4049// See RunTask for details on how to use this API operation.
4050//
4051// The context must be non-nil and will be used for request cancellation. If
4052// the context is nil a panic will occur. In the future the SDK may create
4053// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4054// for more information on using Contexts.
4055func (c *ECS) RunTaskWithContext(ctx aws.Context, input *RunTaskInput, opts ...request.Option) (*RunTaskOutput, error) {
4056	req, out := c.RunTaskRequest(input)
4057	req.SetContext(ctx)
4058	req.ApplyOptions(opts...)
4059	return out, req.Send()
4060}
4061
4062const opStartTask = "StartTask"
4063
4064// StartTaskRequest generates a "aws/request.Request" representing the
4065// client's request for the StartTask operation. The "output" return
4066// value will be populated with the request's response once the request completes
4067// successfully.
4068//
4069// Use "Send" method on the returned Request to send the API call to the service.
4070// the "output" return value is not valid until after Send returns without error.
4071//
4072// See StartTask for more information on using the StartTask
4073// API call, and error handling.
4074//
4075// This method is useful when you want to inject custom logic or configuration
4076// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4077//
4078//
4079//    // Example sending a request using the StartTaskRequest method.
4080//    req, resp := client.StartTaskRequest(params)
4081//
4082//    err := req.Send()
4083//    if err == nil { // resp is now filled
4084//        fmt.Println(resp)
4085//    }
4086//
4087// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/StartTask
4088func (c *ECS) StartTaskRequest(input *StartTaskInput) (req *request.Request, output *StartTaskOutput) {
4089	op := &request.Operation{
4090		Name:       opStartTask,
4091		HTTPMethod: "POST",
4092		HTTPPath:   "/",
4093	}
4094
4095	if input == nil {
4096		input = &StartTaskInput{}
4097	}
4098
4099	output = &StartTaskOutput{}
4100	req = c.newRequest(op, input, output)
4101	return
4102}
4103
4104// StartTask API operation for Amazon EC2 Container Service.
4105//
4106// Starts a new task from the specified task definition on the specified container
4107// instance or instances.
4108//
4109// Alternatively, you can use RunTask to place tasks for you. For more information,
4110// see Scheduling Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html)
4111// in the Amazon Elastic Container Service Developer Guide.
4112//
4113// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4114// with awserr.Error's Code and Message methods to get detailed information about
4115// the error.
4116//
4117// See the AWS API reference guide for Amazon EC2 Container Service's
4118// API operation StartTask for usage and error information.
4119//
4120// Returned Error Types:
4121//   * ServerException
4122//   These errors are usually caused by a server issue.
4123//
4124//   * ClientException
4125//   These errors are usually caused by a client action, such as using an action
4126//   or resource on behalf of a user that doesn't have permissions to use the
4127//   action or resource, or specifying an identifier that is not valid.
4128//
4129//   * InvalidParameterException
4130//   The specified parameter is invalid. Review the available parameters for the
4131//   API request.
4132//
4133//   * ClusterNotFoundException
4134//   The specified cluster could not be found. You can view your available clusters
4135//   with ListClusters. Amazon ECS clusters are Region-specific.
4136//
4137// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/StartTask
4138func (c *ECS) StartTask(input *StartTaskInput) (*StartTaskOutput, error) {
4139	req, out := c.StartTaskRequest(input)
4140	return out, req.Send()
4141}
4142
4143// StartTaskWithContext is the same as StartTask with the addition of
4144// the ability to pass a context and additional request options.
4145//
4146// See StartTask for details on how to use this API operation.
4147//
4148// The context must be non-nil and will be used for request cancellation. If
4149// the context is nil a panic will occur. In the future the SDK may create
4150// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4151// for more information on using Contexts.
4152func (c *ECS) StartTaskWithContext(ctx aws.Context, input *StartTaskInput, opts ...request.Option) (*StartTaskOutput, error) {
4153	req, out := c.StartTaskRequest(input)
4154	req.SetContext(ctx)
4155	req.ApplyOptions(opts...)
4156	return out, req.Send()
4157}
4158
4159const opStopTask = "StopTask"
4160
4161// StopTaskRequest generates a "aws/request.Request" representing the
4162// client's request for the StopTask operation. The "output" return
4163// value will be populated with the request's response once the request completes
4164// successfully.
4165//
4166// Use "Send" method on the returned Request to send the API call to the service.
4167// the "output" return value is not valid until after Send returns without error.
4168//
4169// See StopTask for more information on using the StopTask
4170// API call, and error handling.
4171//
4172// This method is useful when you want to inject custom logic or configuration
4173// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4174//
4175//
4176//    // Example sending a request using the StopTaskRequest method.
4177//    req, resp := client.StopTaskRequest(params)
4178//
4179//    err := req.Send()
4180//    if err == nil { // resp is now filled
4181//        fmt.Println(resp)
4182//    }
4183//
4184// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/StopTask
4185func (c *ECS) StopTaskRequest(input *StopTaskInput) (req *request.Request, output *StopTaskOutput) {
4186	op := &request.Operation{
4187		Name:       opStopTask,
4188		HTTPMethod: "POST",
4189		HTTPPath:   "/",
4190	}
4191
4192	if input == nil {
4193		input = &StopTaskInput{}
4194	}
4195
4196	output = &StopTaskOutput{}
4197	req = c.newRequest(op, input, output)
4198	return
4199}
4200
4201// StopTask API operation for Amazon EC2 Container Service.
4202//
4203// Stops a running task. Any tags associated with the task will be deleted.
4204//
4205// When StopTask is called on a task, the equivalent of docker stop is issued
4206// to the containers running in the task. This results in a SIGTERM value and
4207// a default 30-second timeout, after which the SIGKILL value is sent and the
4208// containers are forcibly stopped. If the container handles the SIGTERM value
4209// gracefully and exits within 30 seconds from receiving it, no SIGKILL value
4210// is sent.
4211//
4212// The default 30-second timeout can be configured on the Amazon ECS container
4213// agent with the ECS_CONTAINER_STOP_TIMEOUT variable. For more information,
4214// see Amazon ECS Container Agent Configuration (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html)
4215// in the Amazon Elastic Container Service Developer Guide.
4216//
4217// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4218// with awserr.Error's Code and Message methods to get detailed information about
4219// the error.
4220//
4221// See the AWS API reference guide for Amazon EC2 Container Service's
4222// API operation StopTask for usage and error information.
4223//
4224// Returned Error Types:
4225//   * ServerException
4226//   These errors are usually caused by a server issue.
4227//
4228//   * ClientException
4229//   These errors are usually caused by a client action, such as using an action
4230//   or resource on behalf of a user that doesn't have permissions to use the
4231//   action or resource, or specifying an identifier that is not valid.
4232//
4233//   * InvalidParameterException
4234//   The specified parameter is invalid. Review the available parameters for the
4235//   API request.
4236//
4237//   * ClusterNotFoundException
4238//   The specified cluster could not be found. You can view your available clusters
4239//   with ListClusters. Amazon ECS clusters are Region-specific.
4240//
4241// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/StopTask
4242func (c *ECS) StopTask(input *StopTaskInput) (*StopTaskOutput, error) {
4243	req, out := c.StopTaskRequest(input)
4244	return out, req.Send()
4245}
4246
4247// StopTaskWithContext is the same as StopTask with the addition of
4248// the ability to pass a context and additional request options.
4249//
4250// See StopTask for details on how to use this API operation.
4251//
4252// The context must be non-nil and will be used for request cancellation. If
4253// the context is nil a panic will occur. In the future the SDK may create
4254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4255// for more information on using Contexts.
4256func (c *ECS) StopTaskWithContext(ctx aws.Context, input *StopTaskInput, opts ...request.Option) (*StopTaskOutput, error) {
4257	req, out := c.StopTaskRequest(input)
4258	req.SetContext(ctx)
4259	req.ApplyOptions(opts...)
4260	return out, req.Send()
4261}
4262
4263const opSubmitAttachmentStateChanges = "SubmitAttachmentStateChanges"
4264
4265// SubmitAttachmentStateChangesRequest generates a "aws/request.Request" representing the
4266// client's request for the SubmitAttachmentStateChanges operation. The "output" return
4267// value will be populated with the request's response once the request completes
4268// successfully.
4269//
4270// Use "Send" method on the returned Request to send the API call to the service.
4271// the "output" return value is not valid until after Send returns without error.
4272//
4273// See SubmitAttachmentStateChanges for more information on using the SubmitAttachmentStateChanges
4274// API call, and error handling.
4275//
4276// This method is useful when you want to inject custom logic or configuration
4277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4278//
4279//
4280//    // Example sending a request using the SubmitAttachmentStateChangesRequest method.
4281//    req, resp := client.SubmitAttachmentStateChangesRequest(params)
4282//
4283//    err := req.Send()
4284//    if err == nil { // resp is now filled
4285//        fmt.Println(resp)
4286//    }
4287//
4288// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitAttachmentStateChanges
4289func (c *ECS) SubmitAttachmentStateChangesRequest(input *SubmitAttachmentStateChangesInput) (req *request.Request, output *SubmitAttachmentStateChangesOutput) {
4290	op := &request.Operation{
4291		Name:       opSubmitAttachmentStateChanges,
4292		HTTPMethod: "POST",
4293		HTTPPath:   "/",
4294	}
4295
4296	if input == nil {
4297		input = &SubmitAttachmentStateChangesInput{}
4298	}
4299
4300	output = &SubmitAttachmentStateChangesOutput{}
4301	req = c.newRequest(op, input, output)
4302	return
4303}
4304
4305// SubmitAttachmentStateChanges API operation for Amazon EC2 Container Service.
4306//
4307//
4308// This action is only used by the Amazon ECS agent, and it is not intended
4309// for use outside of the agent.
4310//
4311// Sent to acknowledge that an attachment changed states.
4312//
4313// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4314// with awserr.Error's Code and Message methods to get detailed information about
4315// the error.
4316//
4317// See the AWS API reference guide for Amazon EC2 Container Service's
4318// API operation SubmitAttachmentStateChanges for usage and error information.
4319//
4320// Returned Error Types:
4321//   * ServerException
4322//   These errors are usually caused by a server issue.
4323//
4324//   * ClientException
4325//   These errors are usually caused by a client action, such as using an action
4326//   or resource on behalf of a user that doesn't have permissions to use the
4327//   action or resource, or specifying an identifier that is not valid.
4328//
4329//   * AccessDeniedException
4330//   You do not have authorization to perform the requested action.
4331//
4332//   * InvalidParameterException
4333//   The specified parameter is invalid. Review the available parameters for the
4334//   API request.
4335//
4336// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitAttachmentStateChanges
4337func (c *ECS) SubmitAttachmentStateChanges(input *SubmitAttachmentStateChangesInput) (*SubmitAttachmentStateChangesOutput, error) {
4338	req, out := c.SubmitAttachmentStateChangesRequest(input)
4339	return out, req.Send()
4340}
4341
4342// SubmitAttachmentStateChangesWithContext is the same as SubmitAttachmentStateChanges with the addition of
4343// the ability to pass a context and additional request options.
4344//
4345// See SubmitAttachmentStateChanges for details on how to use this API operation.
4346//
4347// The context must be non-nil and will be used for request cancellation. If
4348// the context is nil a panic will occur. In the future the SDK may create
4349// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4350// for more information on using Contexts.
4351func (c *ECS) SubmitAttachmentStateChangesWithContext(ctx aws.Context, input *SubmitAttachmentStateChangesInput, opts ...request.Option) (*SubmitAttachmentStateChangesOutput, error) {
4352	req, out := c.SubmitAttachmentStateChangesRequest(input)
4353	req.SetContext(ctx)
4354	req.ApplyOptions(opts...)
4355	return out, req.Send()
4356}
4357
4358const opSubmitContainerStateChange = "SubmitContainerStateChange"
4359
4360// SubmitContainerStateChangeRequest generates a "aws/request.Request" representing the
4361// client's request for the SubmitContainerStateChange operation. The "output" return
4362// value will be populated with the request's response once the request completes
4363// successfully.
4364//
4365// Use "Send" method on the returned Request to send the API call to the service.
4366// the "output" return value is not valid until after Send returns without error.
4367//
4368// See SubmitContainerStateChange for more information on using the SubmitContainerStateChange
4369// API call, and error handling.
4370//
4371// This method is useful when you want to inject custom logic or configuration
4372// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4373//
4374//
4375//    // Example sending a request using the SubmitContainerStateChangeRequest method.
4376//    req, resp := client.SubmitContainerStateChangeRequest(params)
4377//
4378//    err := req.Send()
4379//    if err == nil { // resp is now filled
4380//        fmt.Println(resp)
4381//    }
4382//
4383// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitContainerStateChange
4384func (c *ECS) SubmitContainerStateChangeRequest(input *SubmitContainerStateChangeInput) (req *request.Request, output *SubmitContainerStateChangeOutput) {
4385	op := &request.Operation{
4386		Name:       opSubmitContainerStateChange,
4387		HTTPMethod: "POST",
4388		HTTPPath:   "/",
4389	}
4390
4391	if input == nil {
4392		input = &SubmitContainerStateChangeInput{}
4393	}
4394
4395	output = &SubmitContainerStateChangeOutput{}
4396	req = c.newRequest(op, input, output)
4397	return
4398}
4399
4400// SubmitContainerStateChange API operation for Amazon EC2 Container Service.
4401//
4402//
4403// This action is only used by the Amazon ECS agent, and it is not intended
4404// for use outside of the agent.
4405//
4406// Sent to acknowledge that a container changed states.
4407//
4408// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4409// with awserr.Error's Code and Message methods to get detailed information about
4410// the error.
4411//
4412// See the AWS API reference guide for Amazon EC2 Container Service's
4413// API operation SubmitContainerStateChange for usage and error information.
4414//
4415// Returned Error Types:
4416//   * ServerException
4417//   These errors are usually caused by a server issue.
4418//
4419//   * ClientException
4420//   These errors are usually caused by a client action, such as using an action
4421//   or resource on behalf of a user that doesn't have permissions to use the
4422//   action or resource, or specifying an identifier that is not valid.
4423//
4424//   * AccessDeniedException
4425//   You do not have authorization to perform the requested action.
4426//
4427// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitContainerStateChange
4428func (c *ECS) SubmitContainerStateChange(input *SubmitContainerStateChangeInput) (*SubmitContainerStateChangeOutput, error) {
4429	req, out := c.SubmitContainerStateChangeRequest(input)
4430	return out, req.Send()
4431}
4432
4433// SubmitContainerStateChangeWithContext is the same as SubmitContainerStateChange with the addition of
4434// the ability to pass a context and additional request options.
4435//
4436// See SubmitContainerStateChange for details on how to use this API operation.
4437//
4438// The context must be non-nil and will be used for request cancellation. If
4439// the context is nil a panic will occur. In the future the SDK may create
4440// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4441// for more information on using Contexts.
4442func (c *ECS) SubmitContainerStateChangeWithContext(ctx aws.Context, input *SubmitContainerStateChangeInput, opts ...request.Option) (*SubmitContainerStateChangeOutput, error) {
4443	req, out := c.SubmitContainerStateChangeRequest(input)
4444	req.SetContext(ctx)
4445	req.ApplyOptions(opts...)
4446	return out, req.Send()
4447}
4448
4449const opSubmitTaskStateChange = "SubmitTaskStateChange"
4450
4451// SubmitTaskStateChangeRequest generates a "aws/request.Request" representing the
4452// client's request for the SubmitTaskStateChange operation. The "output" return
4453// value will be populated with the request's response once the request completes
4454// successfully.
4455//
4456// Use "Send" method on the returned Request to send the API call to the service.
4457// the "output" return value is not valid until after Send returns without error.
4458//
4459// See SubmitTaskStateChange for more information on using the SubmitTaskStateChange
4460// API call, and error handling.
4461//
4462// This method is useful when you want to inject custom logic or configuration
4463// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4464//
4465//
4466//    // Example sending a request using the SubmitTaskStateChangeRequest method.
4467//    req, resp := client.SubmitTaskStateChangeRequest(params)
4468//
4469//    err := req.Send()
4470//    if err == nil { // resp is now filled
4471//        fmt.Println(resp)
4472//    }
4473//
4474// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitTaskStateChange
4475func (c *ECS) SubmitTaskStateChangeRequest(input *SubmitTaskStateChangeInput) (req *request.Request, output *SubmitTaskStateChangeOutput) {
4476	op := &request.Operation{
4477		Name:       opSubmitTaskStateChange,
4478		HTTPMethod: "POST",
4479		HTTPPath:   "/",
4480	}
4481
4482	if input == nil {
4483		input = &SubmitTaskStateChangeInput{}
4484	}
4485
4486	output = &SubmitTaskStateChangeOutput{}
4487	req = c.newRequest(op, input, output)
4488	return
4489}
4490
4491// SubmitTaskStateChange API operation for Amazon EC2 Container Service.
4492//
4493//
4494// This action is only used by the Amazon ECS agent, and it is not intended
4495// for use outside of the agent.
4496//
4497// Sent to acknowledge that a task changed states.
4498//
4499// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4500// with awserr.Error's Code and Message methods to get detailed information about
4501// the error.
4502//
4503// See the AWS API reference guide for Amazon EC2 Container Service's
4504// API operation SubmitTaskStateChange for usage and error information.
4505//
4506// Returned Error Types:
4507//   * ServerException
4508//   These errors are usually caused by a server issue.
4509//
4510//   * ClientException
4511//   These errors are usually caused by a client action, such as using an action
4512//   or resource on behalf of a user that doesn't have permissions to use the
4513//   action or resource, or specifying an identifier that is not valid.
4514//
4515//   * AccessDeniedException
4516//   You do not have authorization to perform the requested action.
4517//
4518//   * InvalidParameterException
4519//   The specified parameter is invalid. Review the available parameters for the
4520//   API request.
4521//
4522// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/SubmitTaskStateChange
4523func (c *ECS) SubmitTaskStateChange(input *SubmitTaskStateChangeInput) (*SubmitTaskStateChangeOutput, error) {
4524	req, out := c.SubmitTaskStateChangeRequest(input)
4525	return out, req.Send()
4526}
4527
4528// SubmitTaskStateChangeWithContext is the same as SubmitTaskStateChange with the addition of
4529// the ability to pass a context and additional request options.
4530//
4531// See SubmitTaskStateChange for details on how to use this API operation.
4532//
4533// The context must be non-nil and will be used for request cancellation. If
4534// the context is nil a panic will occur. In the future the SDK may create
4535// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4536// for more information on using Contexts.
4537func (c *ECS) SubmitTaskStateChangeWithContext(ctx aws.Context, input *SubmitTaskStateChangeInput, opts ...request.Option) (*SubmitTaskStateChangeOutput, error) {
4538	req, out := c.SubmitTaskStateChangeRequest(input)
4539	req.SetContext(ctx)
4540	req.ApplyOptions(opts...)
4541	return out, req.Send()
4542}
4543
4544const opTagResource = "TagResource"
4545
4546// TagResourceRequest generates a "aws/request.Request" representing the
4547// client's request for the TagResource operation. The "output" return
4548// value will be populated with the request's response once the request completes
4549// successfully.
4550//
4551// Use "Send" method on the returned Request to send the API call to the service.
4552// the "output" return value is not valid until after Send returns without error.
4553//
4554// See TagResource for more information on using the TagResource
4555// API call, and error handling.
4556//
4557// This method is useful when you want to inject custom logic or configuration
4558// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4559//
4560//
4561//    // Example sending a request using the TagResourceRequest method.
4562//    req, resp := client.TagResourceRequest(params)
4563//
4564//    err := req.Send()
4565//    if err == nil { // resp is now filled
4566//        fmt.Println(resp)
4567//    }
4568//
4569// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/TagResource
4570func (c *ECS) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
4571	op := &request.Operation{
4572		Name:       opTagResource,
4573		HTTPMethod: "POST",
4574		HTTPPath:   "/",
4575	}
4576
4577	if input == nil {
4578		input = &TagResourceInput{}
4579	}
4580
4581	output = &TagResourceOutput{}
4582	req = c.newRequest(op, input, output)
4583	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4584	return
4585}
4586
4587// TagResource API operation for Amazon EC2 Container Service.
4588//
4589// Associates the specified tags to a resource with the specified resourceArn.
4590// If existing tags on a resource are not specified in the request parameters,
4591// they are not changed. When a resource is deleted, the tags associated with
4592// that resource are deleted as well.
4593//
4594// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4595// with awserr.Error's Code and Message methods to get detailed information about
4596// the error.
4597//
4598// See the AWS API reference guide for Amazon EC2 Container Service's
4599// API operation TagResource for usage and error information.
4600//
4601// Returned Error Types:
4602//   * ServerException
4603//   These errors are usually caused by a server issue.
4604//
4605//   * ClientException
4606//   These errors are usually caused by a client action, such as using an action
4607//   or resource on behalf of a user that doesn't have permissions to use the
4608//   action or resource, or specifying an identifier that is not valid.
4609//
4610//   * ClusterNotFoundException
4611//   The specified cluster could not be found. You can view your available clusters
4612//   with ListClusters. Amazon ECS clusters are Region-specific.
4613//
4614//   * ResourceNotFoundException
4615//   The specified resource could not be found.
4616//
4617//   * InvalidParameterException
4618//   The specified parameter is invalid. Review the available parameters for the
4619//   API request.
4620//
4621// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/TagResource
4622func (c *ECS) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
4623	req, out := c.TagResourceRequest(input)
4624	return out, req.Send()
4625}
4626
4627// TagResourceWithContext is the same as TagResource with the addition of
4628// the ability to pass a context and additional request options.
4629//
4630// See TagResource for details on how to use this API operation.
4631//
4632// The context must be non-nil and will be used for request cancellation. If
4633// the context is nil a panic will occur. In the future the SDK may create
4634// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4635// for more information on using Contexts.
4636func (c *ECS) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
4637	req, out := c.TagResourceRequest(input)
4638	req.SetContext(ctx)
4639	req.ApplyOptions(opts...)
4640	return out, req.Send()
4641}
4642
4643const opUntagResource = "UntagResource"
4644
4645// UntagResourceRequest generates a "aws/request.Request" representing the
4646// client's request for the UntagResource operation. The "output" return
4647// value will be populated with the request's response once the request completes
4648// successfully.
4649//
4650// Use "Send" method on the returned Request to send the API call to the service.
4651// the "output" return value is not valid until after Send returns without error.
4652//
4653// See UntagResource for more information on using the UntagResource
4654// API call, and error handling.
4655//
4656// This method is useful when you want to inject custom logic or configuration
4657// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4658//
4659//
4660//    // Example sending a request using the UntagResourceRequest method.
4661//    req, resp := client.UntagResourceRequest(params)
4662//
4663//    err := req.Send()
4664//    if err == nil { // resp is now filled
4665//        fmt.Println(resp)
4666//    }
4667//
4668// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UntagResource
4669func (c *ECS) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
4670	op := &request.Operation{
4671		Name:       opUntagResource,
4672		HTTPMethod: "POST",
4673		HTTPPath:   "/",
4674	}
4675
4676	if input == nil {
4677		input = &UntagResourceInput{}
4678	}
4679
4680	output = &UntagResourceOutput{}
4681	req = c.newRequest(op, input, output)
4682	req.Handlers.Unmarshal.Swap(jsonrpc.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4683	return
4684}
4685
4686// UntagResource API operation for Amazon EC2 Container Service.
4687//
4688// Deletes specified tags from a resource.
4689//
4690// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4691// with awserr.Error's Code and Message methods to get detailed information about
4692// the error.
4693//
4694// See the AWS API reference guide for Amazon EC2 Container Service's
4695// API operation UntagResource for usage and error information.
4696//
4697// Returned Error Types:
4698//   * ServerException
4699//   These errors are usually caused by a server issue.
4700//
4701//   * ClientException
4702//   These errors are usually caused by a client action, such as using an action
4703//   or resource on behalf of a user that doesn't have permissions to use the
4704//   action or resource, or specifying an identifier that is not valid.
4705//
4706//   * ClusterNotFoundException
4707//   The specified cluster could not be found. You can view your available clusters
4708//   with ListClusters. Amazon ECS clusters are Region-specific.
4709//
4710//   * ResourceNotFoundException
4711//   The specified resource could not be found.
4712//
4713//   * InvalidParameterException
4714//   The specified parameter is invalid. Review the available parameters for the
4715//   API request.
4716//
4717// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UntagResource
4718func (c *ECS) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
4719	req, out := c.UntagResourceRequest(input)
4720	return out, req.Send()
4721}
4722
4723// UntagResourceWithContext is the same as UntagResource with the addition of
4724// the ability to pass a context and additional request options.
4725//
4726// See UntagResource for details on how to use this API operation.
4727//
4728// The context must be non-nil and will be used for request cancellation. If
4729// the context is nil a panic will occur. In the future the SDK may create
4730// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4731// for more information on using Contexts.
4732func (c *ECS) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
4733	req, out := c.UntagResourceRequest(input)
4734	req.SetContext(ctx)
4735	req.ApplyOptions(opts...)
4736	return out, req.Send()
4737}
4738
4739const opUpdateClusterSettings = "UpdateClusterSettings"
4740
4741// UpdateClusterSettingsRequest generates a "aws/request.Request" representing the
4742// client's request for the UpdateClusterSettings operation. The "output" return
4743// value will be populated with the request's response once the request completes
4744// successfully.
4745//
4746// Use "Send" method on the returned Request to send the API call to the service.
4747// the "output" return value is not valid until after Send returns without error.
4748//
4749// See UpdateClusterSettings for more information on using the UpdateClusterSettings
4750// API call, and error handling.
4751//
4752// This method is useful when you want to inject custom logic or configuration
4753// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4754//
4755//
4756//    // Example sending a request using the UpdateClusterSettingsRequest method.
4757//    req, resp := client.UpdateClusterSettingsRequest(params)
4758//
4759//    err := req.Send()
4760//    if err == nil { // resp is now filled
4761//        fmt.Println(resp)
4762//    }
4763//
4764// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateClusterSettings
4765func (c *ECS) UpdateClusterSettingsRequest(input *UpdateClusterSettingsInput) (req *request.Request, output *UpdateClusterSettingsOutput) {
4766	op := &request.Operation{
4767		Name:       opUpdateClusterSettings,
4768		HTTPMethod: "POST",
4769		HTTPPath:   "/",
4770	}
4771
4772	if input == nil {
4773		input = &UpdateClusterSettingsInput{}
4774	}
4775
4776	output = &UpdateClusterSettingsOutput{}
4777	req = c.newRequest(op, input, output)
4778	return
4779}
4780
4781// UpdateClusterSettings API operation for Amazon EC2 Container Service.
4782//
4783// Modifies the settings to use for a cluster.
4784//
4785// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4786// with awserr.Error's Code and Message methods to get detailed information about
4787// the error.
4788//
4789// See the AWS API reference guide for Amazon EC2 Container Service's
4790// API operation UpdateClusterSettings for usage and error information.
4791//
4792// Returned Error Types:
4793//   * ServerException
4794//   These errors are usually caused by a server issue.
4795//
4796//   * ClientException
4797//   These errors are usually caused by a client action, such as using an action
4798//   or resource on behalf of a user that doesn't have permissions to use the
4799//   action or resource, or specifying an identifier that is not valid.
4800//
4801//   * ClusterNotFoundException
4802//   The specified cluster could not be found. You can view your available clusters
4803//   with ListClusters. Amazon ECS clusters are Region-specific.
4804//
4805//   * InvalidParameterException
4806//   The specified parameter is invalid. Review the available parameters for the
4807//   API request.
4808//
4809// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateClusterSettings
4810func (c *ECS) UpdateClusterSettings(input *UpdateClusterSettingsInput) (*UpdateClusterSettingsOutput, error) {
4811	req, out := c.UpdateClusterSettingsRequest(input)
4812	return out, req.Send()
4813}
4814
4815// UpdateClusterSettingsWithContext is the same as UpdateClusterSettings with the addition of
4816// the ability to pass a context and additional request options.
4817//
4818// See UpdateClusterSettings for details on how to use this API operation.
4819//
4820// The context must be non-nil and will be used for request cancellation. If
4821// the context is nil a panic will occur. In the future the SDK may create
4822// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4823// for more information on using Contexts.
4824func (c *ECS) UpdateClusterSettingsWithContext(ctx aws.Context, input *UpdateClusterSettingsInput, opts ...request.Option) (*UpdateClusterSettingsOutput, error) {
4825	req, out := c.UpdateClusterSettingsRequest(input)
4826	req.SetContext(ctx)
4827	req.ApplyOptions(opts...)
4828	return out, req.Send()
4829}
4830
4831const opUpdateContainerAgent = "UpdateContainerAgent"
4832
4833// UpdateContainerAgentRequest generates a "aws/request.Request" representing the
4834// client's request for the UpdateContainerAgent operation. The "output" return
4835// value will be populated with the request's response once the request completes
4836// successfully.
4837//
4838// Use "Send" method on the returned Request to send the API call to the service.
4839// the "output" return value is not valid until after Send returns without error.
4840//
4841// See UpdateContainerAgent for more information on using the UpdateContainerAgent
4842// API call, and error handling.
4843//
4844// This method is useful when you want to inject custom logic or configuration
4845// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4846//
4847//
4848//    // Example sending a request using the UpdateContainerAgentRequest method.
4849//    req, resp := client.UpdateContainerAgentRequest(params)
4850//
4851//    err := req.Send()
4852//    if err == nil { // resp is now filled
4853//        fmt.Println(resp)
4854//    }
4855//
4856// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateContainerAgent
4857func (c *ECS) UpdateContainerAgentRequest(input *UpdateContainerAgentInput) (req *request.Request, output *UpdateContainerAgentOutput) {
4858	op := &request.Operation{
4859		Name:       opUpdateContainerAgent,
4860		HTTPMethod: "POST",
4861		HTTPPath:   "/",
4862	}
4863
4864	if input == nil {
4865		input = &UpdateContainerAgentInput{}
4866	}
4867
4868	output = &UpdateContainerAgentOutput{}
4869	req = c.newRequest(op, input, output)
4870	return
4871}
4872
4873// UpdateContainerAgent API operation for Amazon EC2 Container Service.
4874//
4875// Updates the Amazon ECS container agent on a specified container instance.
4876// Updating the Amazon ECS container agent does not interrupt running tasks
4877// or services on the container instance. The process for updating the agent
4878// differs depending on whether your container instance was launched with the
4879// Amazon ECS-optimized AMI or another operating system.
4880//
4881// UpdateContainerAgent requires the Amazon ECS-optimized AMI or Amazon Linux
4882// with the ecs-init service installed and running. For help updating the Amazon
4883// ECS container agent on other operating systems, see Manually Updating the
4884// Amazon ECS Container Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html#manually_update_agent)
4885// in the Amazon Elastic Container Service Developer Guide.
4886//
4887// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4888// with awserr.Error's Code and Message methods to get detailed information about
4889// the error.
4890//
4891// See the AWS API reference guide for Amazon EC2 Container Service's
4892// API operation UpdateContainerAgent for usage and error information.
4893//
4894// Returned Error Types:
4895//   * ServerException
4896//   These errors are usually caused by a server issue.
4897//
4898//   * ClientException
4899//   These errors are usually caused by a client action, such as using an action
4900//   or resource on behalf of a user that doesn't have permissions to use the
4901//   action or resource, or specifying an identifier that is not valid.
4902//
4903//   * InvalidParameterException
4904//   The specified parameter is invalid. Review the available parameters for the
4905//   API request.
4906//
4907//   * ClusterNotFoundException
4908//   The specified cluster could not be found. You can view your available clusters
4909//   with ListClusters. Amazon ECS clusters are Region-specific.
4910//
4911//   * UpdateInProgressException
4912//   There is already a current Amazon ECS container agent update in progress
4913//   on the specified container instance. If the container agent becomes disconnected
4914//   while it is in a transitional stage, such as PENDING or STAGING, the update
4915//   process can get stuck in that state. However, when the agent reconnects,
4916//   it resumes where it stopped previously.
4917//
4918//   * NoUpdateAvailableException
4919//   There is no update available for this Amazon ECS container agent. This could
4920//   be because the agent is already running the latest version, or it is so old
4921//   that there is no update path to the current version.
4922//
4923//   * MissingVersionException
4924//   Amazon ECS is unable to determine the current version of the Amazon ECS container
4925//   agent on the container instance and does not have enough information to proceed
4926//   with an update. This could be because the agent running on the container
4927//   instance is an older or custom version that does not use our version information.
4928//
4929// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateContainerAgent
4930func (c *ECS) UpdateContainerAgent(input *UpdateContainerAgentInput) (*UpdateContainerAgentOutput, error) {
4931	req, out := c.UpdateContainerAgentRequest(input)
4932	return out, req.Send()
4933}
4934
4935// UpdateContainerAgentWithContext is the same as UpdateContainerAgent with the addition of
4936// the ability to pass a context and additional request options.
4937//
4938// See UpdateContainerAgent for details on how to use this API operation.
4939//
4940// The context must be non-nil and will be used for request cancellation. If
4941// the context is nil a panic will occur. In the future the SDK may create
4942// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4943// for more information on using Contexts.
4944func (c *ECS) UpdateContainerAgentWithContext(ctx aws.Context, input *UpdateContainerAgentInput, opts ...request.Option) (*UpdateContainerAgentOutput, error) {
4945	req, out := c.UpdateContainerAgentRequest(input)
4946	req.SetContext(ctx)
4947	req.ApplyOptions(opts...)
4948	return out, req.Send()
4949}
4950
4951const opUpdateContainerInstancesState = "UpdateContainerInstancesState"
4952
4953// UpdateContainerInstancesStateRequest generates a "aws/request.Request" representing the
4954// client's request for the UpdateContainerInstancesState operation. The "output" return
4955// value will be populated with the request's response once the request completes
4956// successfully.
4957//
4958// Use "Send" method on the returned Request to send the API call to the service.
4959// the "output" return value is not valid until after Send returns without error.
4960//
4961// See UpdateContainerInstancesState for more information on using the UpdateContainerInstancesState
4962// API call, and error handling.
4963//
4964// This method is useful when you want to inject custom logic or configuration
4965// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4966//
4967//
4968//    // Example sending a request using the UpdateContainerInstancesStateRequest method.
4969//    req, resp := client.UpdateContainerInstancesStateRequest(params)
4970//
4971//    err := req.Send()
4972//    if err == nil { // resp is now filled
4973//        fmt.Println(resp)
4974//    }
4975//
4976// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateContainerInstancesState
4977func (c *ECS) UpdateContainerInstancesStateRequest(input *UpdateContainerInstancesStateInput) (req *request.Request, output *UpdateContainerInstancesStateOutput) {
4978	op := &request.Operation{
4979		Name:       opUpdateContainerInstancesState,
4980		HTTPMethod: "POST",
4981		HTTPPath:   "/",
4982	}
4983
4984	if input == nil {
4985		input = &UpdateContainerInstancesStateInput{}
4986	}
4987
4988	output = &UpdateContainerInstancesStateOutput{}
4989	req = c.newRequest(op, input, output)
4990	return
4991}
4992
4993// UpdateContainerInstancesState API operation for Amazon EC2 Container Service.
4994//
4995// Modifies the status of an Amazon ECS container instance.
4996//
4997// Once a container instance has reached an ACTIVE state, you can change the
4998// status of a container instance to DRAINING to manually remove an instance
4999// from a cluster, for example to perform system updates, update the Docker
5000// daemon, or scale down the cluster size.
5001//
5002// A container instance cannot be changed to DRAINING until it has reached an
5003// ACTIVE status. If the instance is in any other status, an error will be received.
5004//
5005// When you set a container instance to DRAINING, Amazon ECS prevents new tasks
5006// from being scheduled for placement on the container instance and replacement
5007// service tasks are started on other container instances in the cluster if
5008// the resources are available. Service tasks on the container instance that
5009// are in the PENDING state are stopped immediately.
5010//
5011// Service tasks on the container instance that are in the RUNNING state are
5012// stopped and replaced according to the service's deployment configuration
5013// parameters, minimumHealthyPercent and maximumPercent. You can change the
5014// deployment configuration of your service using UpdateService.
5015//
5016//    * If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount
5017//    temporarily during task replacement. For example, desiredCount is four
5018//    tasks, a minimum of 50% allows the scheduler to stop two existing tasks
5019//    before starting two new tasks. If the minimum is 100%, the service scheduler
5020//    can't remove existing tasks until the replacement tasks are considered
5021//    healthy. Tasks for services that do not use a load balancer are considered
5022//    healthy if they are in the RUNNING state. Tasks for services that use
5023//    a load balancer are considered healthy if they are in the RUNNING state
5024//    and the container instance they are hosted on is reported as healthy by
5025//    the load balancer.
5026//
5027//    * The maximumPercent parameter represents an upper limit on the number
5028//    of running tasks during task replacement, which enables you to define
5029//    the replacement batch size. For example, if desiredCount is four tasks,
5030//    a maximum of 200% starts four new tasks before stopping the four tasks
5031//    to be drained, provided that the cluster resources required to do this
5032//    are available. If the maximum is 100%, then replacement tasks can't start
5033//    until the draining tasks have stopped.
5034//
5035// Any PENDING or RUNNING tasks that do not belong to a service are not affected.
5036// You must wait for them to finish or stop them manually.
5037//
5038// A container instance has completed draining when it has no more RUNNING tasks.
5039// You can verify this using ListTasks.
5040//
5041// When a container instance has been drained, you can set a container instance
5042// to ACTIVE status and once it has reached that status the Amazon ECS scheduler
5043// can begin scheduling tasks on the instance again.
5044//
5045// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5046// with awserr.Error's Code and Message methods to get detailed information about
5047// the error.
5048//
5049// See the AWS API reference guide for Amazon EC2 Container Service's
5050// API operation UpdateContainerInstancesState for usage and error information.
5051//
5052// Returned Error Types:
5053//   * ServerException
5054//   These errors are usually caused by a server issue.
5055//
5056//   * ClientException
5057//   These errors are usually caused by a client action, such as using an action
5058//   or resource on behalf of a user that doesn't have permissions to use the
5059//   action or resource, or specifying an identifier that is not valid.
5060//
5061//   * InvalidParameterException
5062//   The specified parameter is invalid. Review the available parameters for the
5063//   API request.
5064//
5065//   * ClusterNotFoundException
5066//   The specified cluster could not be found. You can view your available clusters
5067//   with ListClusters. Amazon ECS clusters are Region-specific.
5068//
5069// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateContainerInstancesState
5070func (c *ECS) UpdateContainerInstancesState(input *UpdateContainerInstancesStateInput) (*UpdateContainerInstancesStateOutput, error) {
5071	req, out := c.UpdateContainerInstancesStateRequest(input)
5072	return out, req.Send()
5073}
5074
5075// UpdateContainerInstancesStateWithContext is the same as UpdateContainerInstancesState with the addition of
5076// the ability to pass a context and additional request options.
5077//
5078// See UpdateContainerInstancesState for details on how to use this API operation.
5079//
5080// The context must be non-nil and will be used for request cancellation. If
5081// the context is nil a panic will occur. In the future the SDK may create
5082// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5083// for more information on using Contexts.
5084func (c *ECS) UpdateContainerInstancesStateWithContext(ctx aws.Context, input *UpdateContainerInstancesStateInput, opts ...request.Option) (*UpdateContainerInstancesStateOutput, error) {
5085	req, out := c.UpdateContainerInstancesStateRequest(input)
5086	req.SetContext(ctx)
5087	req.ApplyOptions(opts...)
5088	return out, req.Send()
5089}
5090
5091const opUpdateService = "UpdateService"
5092
5093// UpdateServiceRequest generates a "aws/request.Request" representing the
5094// client's request for the UpdateService operation. The "output" return
5095// value will be populated with the request's response once the request completes
5096// successfully.
5097//
5098// Use "Send" method on the returned Request to send the API call to the service.
5099// the "output" return value is not valid until after Send returns without error.
5100//
5101// See UpdateService for more information on using the UpdateService
5102// API call, and error handling.
5103//
5104// This method is useful when you want to inject custom logic or configuration
5105// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5106//
5107//
5108//    // Example sending a request using the UpdateServiceRequest method.
5109//    req, resp := client.UpdateServiceRequest(params)
5110//
5111//    err := req.Send()
5112//    if err == nil { // resp is now filled
5113//        fmt.Println(resp)
5114//    }
5115//
5116// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateService
5117func (c *ECS) UpdateServiceRequest(input *UpdateServiceInput) (req *request.Request, output *UpdateServiceOutput) {
5118	op := &request.Operation{
5119		Name:       opUpdateService,
5120		HTTPMethod: "POST",
5121		HTTPPath:   "/",
5122	}
5123
5124	if input == nil {
5125		input = &UpdateServiceInput{}
5126	}
5127
5128	output = &UpdateServiceOutput{}
5129	req = c.newRequest(op, input, output)
5130	return
5131}
5132
5133// UpdateService API operation for Amazon EC2 Container Service.
5134//
5135// Modifies the parameters of a service.
5136//
5137// For services using the rolling update (ECS) deployment controller, the desired
5138// count, deployment configuration, network configuration, or task definition
5139// used can be updated.
5140//
5141// For services using the blue/green (CODE_DEPLOY) deployment controller, only
5142// the desired count, deployment configuration, and health check grace period
5143// can be updated using this API. If the network configuration, platform version,
5144// or task definition need to be updated, a new AWS CodeDeploy deployment should
5145// be created. For more information, see CreateDeployment (https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html)
5146// in the AWS CodeDeploy API Reference.
5147//
5148// For services using an external deployment controller, you can update only
5149// the desired count and health check grace period using this API. If the launch
5150// type, load balancer, network configuration, platform version, or task definition
5151// need to be updated, you should create a new task set. For more information,
5152// see CreateTaskSet.
5153//
5154// You can add to or subtract from the number of instantiations of a task definition
5155// in a service by specifying the cluster that the service is running in and
5156// a new desiredCount parameter.
5157//
5158// If you have updated the Docker image of your application, you can create
5159// a new task definition with that image and deploy it to your service. The
5160// service scheduler uses the minimum healthy percent and maximum percent parameters
5161// (in the service's deployment configuration) to determine the deployment strategy.
5162//
5163// If your updated Docker image uses the same tag as what is in the existing
5164// task definition for your service (for example, my_image:latest), you do not
5165// need to create a new revision of your task definition. You can update the
5166// service using the forceNewDeployment option. The new tasks launched by the
5167// deployment pull the current image/tag combination from your repository when
5168// they start.
5169//
5170// You can also update the deployment configuration of a service. When a deployment
5171// is triggered by updating the task definition of a service, the service scheduler
5172// uses the deployment configuration parameters, minimumHealthyPercent and maximumPercent,
5173// to determine the deployment strategy.
5174//
5175//    * If minimumHealthyPercent is below 100%, the scheduler can ignore desiredCount
5176//    temporarily during a deployment. For example, if desiredCount is four
5177//    tasks, a minimum of 50% allows the scheduler to stop two existing tasks
5178//    before starting two new tasks. Tasks for services that do not use a load
5179//    balancer are considered healthy if they are in the RUNNING state. Tasks
5180//    for services that use a load balancer are considered healthy if they are
5181//    in the RUNNING state and the container instance they are hosted on is
5182//    reported as healthy by the load balancer.
5183//
5184//    * The maximumPercent parameter represents an upper limit on the number
5185//    of running tasks during a deployment, which enables you to define the
5186//    deployment batch size. For example, if desiredCount is four tasks, a maximum
5187//    of 200% starts four new tasks before stopping the four older tasks (provided
5188//    that the cluster resources required to do this are available).
5189//
5190// When UpdateService stops a task during a deployment, the equivalent of docker
5191// stop is issued to the containers running in the task. This results in a SIGTERM
5192// and a 30-second timeout, after which SIGKILL is sent and the containers are
5193// forcibly stopped. If the container handles the SIGTERM gracefully and exits
5194// within 30 seconds from receiving it, no SIGKILL is sent.
5195//
5196// When the service scheduler launches new tasks, it determines task placement
5197// in your cluster with the following logic:
5198//
5199//    * Determine which of the container instances in your cluster can support
5200//    your service's task definition (for example, they have the required CPU,
5201//    memory, ports, and container instance attributes).
5202//
5203//    * By default, the service scheduler attempts to balance tasks across Availability
5204//    Zones in this manner (although you can choose a different placement strategy):
5205//    Sort the valid container instances by the fewest number of running tasks
5206//    for this service in the same Availability Zone as the instance. For example,
5207//    if zone A has one running service task and zones B and C each have zero,
5208//    valid container instances in either zone B or C are considered optimal
5209//    for placement. Place the new service task on a valid container instance
5210//    in an optimal Availability Zone (based on the previous steps), favoring
5211//    container instances with the fewest number of running tasks for this service.
5212//
5213// When the service scheduler stops running tasks, it attempts to maintain balance
5214// across the Availability Zones in your cluster using the following logic:
5215//
5216//    * Sort the container instances by the largest number of running tasks
5217//    for this service in the same Availability Zone as the instance. For example,
5218//    if zone A has one running service task and zones B and C each have two,
5219//    container instances in either zone B or C are considered optimal for termination.
5220//
5221//    * Stop the task on a container instance in an optimal Availability Zone
5222//    (based on the previous steps), favoring container instances with the largest
5223//    number of running tasks for this service.
5224//
5225// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5226// with awserr.Error's Code and Message methods to get detailed information about
5227// the error.
5228//
5229// See the AWS API reference guide for Amazon EC2 Container Service's
5230// API operation UpdateService for usage and error information.
5231//
5232// Returned Error Types:
5233//   * ServerException
5234//   These errors are usually caused by a server issue.
5235//
5236//   * ClientException
5237//   These errors are usually caused by a client action, such as using an action
5238//   or resource on behalf of a user that doesn't have permissions to use the
5239//   action or resource, or specifying an identifier that is not valid.
5240//
5241//   * InvalidParameterException
5242//   The specified parameter is invalid. Review the available parameters for the
5243//   API request.
5244//
5245//   * ClusterNotFoundException
5246//   The specified cluster could not be found. You can view your available clusters
5247//   with ListClusters. Amazon ECS clusters are Region-specific.
5248//
5249//   * ServiceNotFoundException
5250//   The specified service could not be found. You can view your available services
5251//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
5252//
5253//   * ServiceNotActiveException
5254//   The specified service is not active. You can't update a service that is inactive.
5255//   If you have previously deleted a service, you can re-create it with CreateService.
5256//
5257//   * PlatformUnknownException
5258//   The specified platform version does not exist.
5259//
5260//   * PlatformTaskDefinitionIncompatibilityException
5261//   The specified platform version does not satisfy the task definition's required
5262//   capabilities.
5263//
5264//   * AccessDeniedException
5265//   You do not have authorization to perform the requested action.
5266//
5267// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateService
5268func (c *ECS) UpdateService(input *UpdateServiceInput) (*UpdateServiceOutput, error) {
5269	req, out := c.UpdateServiceRequest(input)
5270	return out, req.Send()
5271}
5272
5273// UpdateServiceWithContext is the same as UpdateService with the addition of
5274// the ability to pass a context and additional request options.
5275//
5276// See UpdateService for details on how to use this API operation.
5277//
5278// The context must be non-nil and will be used for request cancellation. If
5279// the context is nil a panic will occur. In the future the SDK may create
5280// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5281// for more information on using Contexts.
5282func (c *ECS) UpdateServiceWithContext(ctx aws.Context, input *UpdateServiceInput, opts ...request.Option) (*UpdateServiceOutput, error) {
5283	req, out := c.UpdateServiceRequest(input)
5284	req.SetContext(ctx)
5285	req.ApplyOptions(opts...)
5286	return out, req.Send()
5287}
5288
5289const opUpdateServicePrimaryTaskSet = "UpdateServicePrimaryTaskSet"
5290
5291// UpdateServicePrimaryTaskSetRequest generates a "aws/request.Request" representing the
5292// client's request for the UpdateServicePrimaryTaskSet operation. The "output" return
5293// value will be populated with the request's response once the request completes
5294// successfully.
5295//
5296// Use "Send" method on the returned Request to send the API call to the service.
5297// the "output" return value is not valid until after Send returns without error.
5298//
5299// See UpdateServicePrimaryTaskSet for more information on using the UpdateServicePrimaryTaskSet
5300// API call, and error handling.
5301//
5302// This method is useful when you want to inject custom logic or configuration
5303// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5304//
5305//
5306//    // Example sending a request using the UpdateServicePrimaryTaskSetRequest method.
5307//    req, resp := client.UpdateServicePrimaryTaskSetRequest(params)
5308//
5309//    err := req.Send()
5310//    if err == nil { // resp is now filled
5311//        fmt.Println(resp)
5312//    }
5313//
5314// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateServicePrimaryTaskSet
5315func (c *ECS) UpdateServicePrimaryTaskSetRequest(input *UpdateServicePrimaryTaskSetInput) (req *request.Request, output *UpdateServicePrimaryTaskSetOutput) {
5316	op := &request.Operation{
5317		Name:       opUpdateServicePrimaryTaskSet,
5318		HTTPMethod: "POST",
5319		HTTPPath:   "/",
5320	}
5321
5322	if input == nil {
5323		input = &UpdateServicePrimaryTaskSetInput{}
5324	}
5325
5326	output = &UpdateServicePrimaryTaskSetOutput{}
5327	req = c.newRequest(op, input, output)
5328	return
5329}
5330
5331// UpdateServicePrimaryTaskSet API operation for Amazon EC2 Container Service.
5332//
5333// Modifies which task set in a service is the primary task set. Any parameters
5334// that are updated on the primary task set in a service will transition to
5335// the service. This is used when a service uses the EXTERNAL deployment controller
5336// type. For more information, see Amazon ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
5337// in the Amazon Elastic Container Service Developer Guide.
5338//
5339// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5340// with awserr.Error's Code and Message methods to get detailed information about
5341// the error.
5342//
5343// See the AWS API reference guide for Amazon EC2 Container Service's
5344// API operation UpdateServicePrimaryTaskSet for usage and error information.
5345//
5346// Returned Error Types:
5347//   * ServerException
5348//   These errors are usually caused by a server issue.
5349//
5350//   * ClientException
5351//   These errors are usually caused by a client action, such as using an action
5352//   or resource on behalf of a user that doesn't have permissions to use the
5353//   action or resource, or specifying an identifier that is not valid.
5354//
5355//   * InvalidParameterException
5356//   The specified parameter is invalid. Review the available parameters for the
5357//   API request.
5358//
5359//   * ClusterNotFoundException
5360//   The specified cluster could not be found. You can view your available clusters
5361//   with ListClusters. Amazon ECS clusters are Region-specific.
5362//
5363//   * UnsupportedFeatureException
5364//   The specified task is not supported in this Region.
5365//
5366//   * ServiceNotFoundException
5367//   The specified service could not be found. You can view your available services
5368//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
5369//
5370//   * ServiceNotActiveException
5371//   The specified service is not active. You can't update a service that is inactive.
5372//   If you have previously deleted a service, you can re-create it with CreateService.
5373//
5374//   * TaskSetNotFoundException
5375//   The specified task set could not be found. You can view your available task
5376//   sets with DescribeTaskSets. Task sets are specific to each cluster, service
5377//   and Region.
5378//
5379//   * AccessDeniedException
5380//   You do not have authorization to perform the requested action.
5381//
5382// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateServicePrimaryTaskSet
5383func (c *ECS) UpdateServicePrimaryTaskSet(input *UpdateServicePrimaryTaskSetInput) (*UpdateServicePrimaryTaskSetOutput, error) {
5384	req, out := c.UpdateServicePrimaryTaskSetRequest(input)
5385	return out, req.Send()
5386}
5387
5388// UpdateServicePrimaryTaskSetWithContext is the same as UpdateServicePrimaryTaskSet with the addition of
5389// the ability to pass a context and additional request options.
5390//
5391// See UpdateServicePrimaryTaskSet for details on how to use this API operation.
5392//
5393// The context must be non-nil and will be used for request cancellation. If
5394// the context is nil a panic will occur. In the future the SDK may create
5395// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5396// for more information on using Contexts.
5397func (c *ECS) UpdateServicePrimaryTaskSetWithContext(ctx aws.Context, input *UpdateServicePrimaryTaskSetInput, opts ...request.Option) (*UpdateServicePrimaryTaskSetOutput, error) {
5398	req, out := c.UpdateServicePrimaryTaskSetRequest(input)
5399	req.SetContext(ctx)
5400	req.ApplyOptions(opts...)
5401	return out, req.Send()
5402}
5403
5404const opUpdateTaskSet = "UpdateTaskSet"
5405
5406// UpdateTaskSetRequest generates a "aws/request.Request" representing the
5407// client's request for the UpdateTaskSet operation. The "output" return
5408// value will be populated with the request's response once the request completes
5409// successfully.
5410//
5411// Use "Send" method on the returned Request to send the API call to the service.
5412// the "output" return value is not valid until after Send returns without error.
5413//
5414// See UpdateTaskSet for more information on using the UpdateTaskSet
5415// API call, and error handling.
5416//
5417// This method is useful when you want to inject custom logic or configuration
5418// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5419//
5420//
5421//    // Example sending a request using the UpdateTaskSetRequest method.
5422//    req, resp := client.UpdateTaskSetRequest(params)
5423//
5424//    err := req.Send()
5425//    if err == nil { // resp is now filled
5426//        fmt.Println(resp)
5427//    }
5428//
5429// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateTaskSet
5430func (c *ECS) UpdateTaskSetRequest(input *UpdateTaskSetInput) (req *request.Request, output *UpdateTaskSetOutput) {
5431	op := &request.Operation{
5432		Name:       opUpdateTaskSet,
5433		HTTPMethod: "POST",
5434		HTTPPath:   "/",
5435	}
5436
5437	if input == nil {
5438		input = &UpdateTaskSetInput{}
5439	}
5440
5441	output = &UpdateTaskSetOutput{}
5442	req = c.newRequest(op, input, output)
5443	return
5444}
5445
5446// UpdateTaskSet API operation for Amazon EC2 Container Service.
5447//
5448// Modifies a task set. This is used when a service uses the EXTERNAL deployment
5449// controller type. For more information, see Amazon ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
5450// in the Amazon Elastic Container Service Developer Guide.
5451//
5452// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5453// with awserr.Error's Code and Message methods to get detailed information about
5454// the error.
5455//
5456// See the AWS API reference guide for Amazon EC2 Container Service's
5457// API operation UpdateTaskSet for usage and error information.
5458//
5459// Returned Error Types:
5460//   * ServerException
5461//   These errors are usually caused by a server issue.
5462//
5463//   * ClientException
5464//   These errors are usually caused by a client action, such as using an action
5465//   or resource on behalf of a user that doesn't have permissions to use the
5466//   action or resource, or specifying an identifier that is not valid.
5467//
5468//   * InvalidParameterException
5469//   The specified parameter is invalid. Review the available parameters for the
5470//   API request.
5471//
5472//   * ClusterNotFoundException
5473//   The specified cluster could not be found. You can view your available clusters
5474//   with ListClusters. Amazon ECS clusters are Region-specific.
5475//
5476//   * UnsupportedFeatureException
5477//   The specified task is not supported in this Region.
5478//
5479//   * AccessDeniedException
5480//   You do not have authorization to perform the requested action.
5481//
5482//   * ServiceNotFoundException
5483//   The specified service could not be found. You can view your available services
5484//   with ListServices. Amazon ECS services are cluster-specific and Region-specific.
5485//
5486//   * ServiceNotActiveException
5487//   The specified service is not active. You can't update a service that is inactive.
5488//   If you have previously deleted a service, you can re-create it with CreateService.
5489//
5490//   * TaskSetNotFoundException
5491//   The specified task set could not be found. You can view your available task
5492//   sets with DescribeTaskSets. Task sets are specific to each cluster, service
5493//   and Region.
5494//
5495// See also, https://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/UpdateTaskSet
5496func (c *ECS) UpdateTaskSet(input *UpdateTaskSetInput) (*UpdateTaskSetOutput, error) {
5497	req, out := c.UpdateTaskSetRequest(input)
5498	return out, req.Send()
5499}
5500
5501// UpdateTaskSetWithContext is the same as UpdateTaskSet with the addition of
5502// the ability to pass a context and additional request options.
5503//
5504// See UpdateTaskSet for details on how to use this API operation.
5505//
5506// The context must be non-nil and will be used for request cancellation. If
5507// the context is nil a panic will occur. In the future the SDK may create
5508// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5509// for more information on using Contexts.
5510func (c *ECS) UpdateTaskSetWithContext(ctx aws.Context, input *UpdateTaskSetInput, opts ...request.Option) (*UpdateTaskSetOutput, error) {
5511	req, out := c.UpdateTaskSetRequest(input)
5512	req.SetContext(ctx)
5513	req.ApplyOptions(opts...)
5514	return out, req.Send()
5515}
5516
5517// You do not have authorization to perform the requested action.
5518type AccessDeniedException struct {
5519	_            struct{} `type:"structure"`
5520	respMetadata protocol.ResponseMetadata
5521
5522	Message_ *string `locationName:"message" type:"string"`
5523}
5524
5525// String returns the string representation
5526func (s AccessDeniedException) String() string {
5527	return awsutil.Prettify(s)
5528}
5529
5530// GoString returns the string representation
5531func (s AccessDeniedException) GoString() string {
5532	return s.String()
5533}
5534
5535func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
5536	return &AccessDeniedException{
5537		respMetadata: v,
5538	}
5539}
5540
5541// Code returns the exception type name.
5542func (s AccessDeniedException) Code() string {
5543	return "AccessDeniedException"
5544}
5545
5546// Message returns the exception's message.
5547func (s AccessDeniedException) Message() string {
5548	if s.Message_ != nil {
5549		return *s.Message_
5550	}
5551	return ""
5552}
5553
5554// OrigErr always returns nil, satisfies awserr.Error interface.
5555func (s AccessDeniedException) OrigErr() error {
5556	return nil
5557}
5558
5559func (s AccessDeniedException) Error() string {
5560	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
5561}
5562
5563// Status code returns the HTTP status code for the request's response error.
5564func (s AccessDeniedException) StatusCode() int {
5565	return s.respMetadata.StatusCode
5566}
5567
5568// RequestID returns the service's response RequestID for request.
5569func (s AccessDeniedException) RequestID() string {
5570	return s.respMetadata.RequestID
5571}
5572
5573// An object representing a container instance or task attachment.
5574type Attachment struct {
5575	_ struct{} `type:"structure"`
5576
5577	// Details of the attachment. For elastic network interfaces, this includes
5578	// the network interface ID, the MAC address, the subnet ID, and the private
5579	// IPv4 address.
5580	Details []*KeyValuePair `locationName:"details" type:"list"`
5581
5582	// The unique identifier for the attachment.
5583	Id *string `locationName:"id" type:"string"`
5584
5585	// The status of the attachment. Valid values are PRECREATED, CREATED, ATTACHING,
5586	// ATTACHED, DETACHING, DETACHED, and DELETED.
5587	Status *string `locationName:"status" type:"string"`
5588
5589	// The type of the attachment, such as ElasticNetworkInterface.
5590	Type *string `locationName:"type" type:"string"`
5591}
5592
5593// String returns the string representation
5594func (s Attachment) String() string {
5595	return awsutil.Prettify(s)
5596}
5597
5598// GoString returns the string representation
5599func (s Attachment) GoString() string {
5600	return s.String()
5601}
5602
5603// SetDetails sets the Details field's value.
5604func (s *Attachment) SetDetails(v []*KeyValuePair) *Attachment {
5605	s.Details = v
5606	return s
5607}
5608
5609// SetId sets the Id field's value.
5610func (s *Attachment) SetId(v string) *Attachment {
5611	s.Id = &v
5612	return s
5613}
5614
5615// SetStatus sets the Status field's value.
5616func (s *Attachment) SetStatus(v string) *Attachment {
5617	s.Status = &v
5618	return s
5619}
5620
5621// SetType sets the Type field's value.
5622func (s *Attachment) SetType(v string) *Attachment {
5623	s.Type = &v
5624	return s
5625}
5626
5627// An object representing a change in state for a task attachment.
5628type AttachmentStateChange struct {
5629	_ struct{} `type:"structure"`
5630
5631	// The Amazon Resource Name (ARN) of the attachment.
5632	//
5633	// AttachmentArn is a required field
5634	AttachmentArn *string `locationName:"attachmentArn" type:"string" required:"true"`
5635
5636	// The status of the attachment.
5637	//
5638	// Status is a required field
5639	Status *string `locationName:"status" type:"string" required:"true"`
5640}
5641
5642// String returns the string representation
5643func (s AttachmentStateChange) String() string {
5644	return awsutil.Prettify(s)
5645}
5646
5647// GoString returns the string representation
5648func (s AttachmentStateChange) GoString() string {
5649	return s.String()
5650}
5651
5652// Validate inspects the fields of the type to determine if they are valid.
5653func (s *AttachmentStateChange) Validate() error {
5654	invalidParams := request.ErrInvalidParams{Context: "AttachmentStateChange"}
5655	if s.AttachmentArn == nil {
5656		invalidParams.Add(request.NewErrParamRequired("AttachmentArn"))
5657	}
5658	if s.Status == nil {
5659		invalidParams.Add(request.NewErrParamRequired("Status"))
5660	}
5661
5662	if invalidParams.Len() > 0 {
5663		return invalidParams
5664	}
5665	return nil
5666}
5667
5668// SetAttachmentArn sets the AttachmentArn field's value.
5669func (s *AttachmentStateChange) SetAttachmentArn(v string) *AttachmentStateChange {
5670	s.AttachmentArn = &v
5671	return s
5672}
5673
5674// SetStatus sets the Status field's value.
5675func (s *AttachmentStateChange) SetStatus(v string) *AttachmentStateChange {
5676	s.Status = &v
5677	return s
5678}
5679
5680// An attribute is a name-value pair associated with an Amazon ECS object. Attributes
5681// enable you to extend the Amazon ECS data model by adding custom metadata
5682// to your resources. For more information, see Attributes (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes)
5683// in the Amazon Elastic Container Service Developer Guide.
5684type Attribute struct {
5685	_ struct{} `type:"structure"`
5686
5687	// The name of the attribute. Up to 128 letters (uppercase and lowercase), numbers,
5688	// hyphens, underscores, and periods are allowed.
5689	//
5690	// Name is a required field
5691	Name *string `locationName:"name" type:"string" required:"true"`
5692
5693	// The ID of the target. You can specify the short form ID for a resource or
5694	// the full Amazon Resource Name (ARN).
5695	TargetId *string `locationName:"targetId" type:"string"`
5696
5697	// The type of the target with which to attach the attribute. This parameter
5698	// is required if you use the short form ID for a resource instead of the full
5699	// ARN.
5700	TargetType *string `locationName:"targetType" type:"string" enum:"TargetType"`
5701
5702	// The value of the attribute. Up to 128 letters (uppercase and lowercase),
5703	// numbers, hyphens, underscores, periods, at signs (@), forward slashes, colons,
5704	// and spaces are allowed.
5705	Value *string `locationName:"value" type:"string"`
5706}
5707
5708// String returns the string representation
5709func (s Attribute) String() string {
5710	return awsutil.Prettify(s)
5711}
5712
5713// GoString returns the string representation
5714func (s Attribute) GoString() string {
5715	return s.String()
5716}
5717
5718// Validate inspects the fields of the type to determine if they are valid.
5719func (s *Attribute) Validate() error {
5720	invalidParams := request.ErrInvalidParams{Context: "Attribute"}
5721	if s.Name == nil {
5722		invalidParams.Add(request.NewErrParamRequired("Name"))
5723	}
5724
5725	if invalidParams.Len() > 0 {
5726		return invalidParams
5727	}
5728	return nil
5729}
5730
5731// SetName sets the Name field's value.
5732func (s *Attribute) SetName(v string) *Attribute {
5733	s.Name = &v
5734	return s
5735}
5736
5737// SetTargetId sets the TargetId field's value.
5738func (s *Attribute) SetTargetId(v string) *Attribute {
5739	s.TargetId = &v
5740	return s
5741}
5742
5743// SetTargetType sets the TargetType field's value.
5744func (s *Attribute) SetTargetType(v string) *Attribute {
5745	s.TargetType = &v
5746	return s
5747}
5748
5749// SetValue sets the Value field's value.
5750func (s *Attribute) SetValue(v string) *Attribute {
5751	s.Value = &v
5752	return s
5753}
5754
5755// You can apply up to 10 custom attributes per resource. You can view the attributes
5756// of a resource with ListAttributes. You can remove existing attributes on
5757// a resource with DeleteAttributes.
5758type AttributeLimitExceededException struct {
5759	_            struct{} `type:"structure"`
5760	respMetadata protocol.ResponseMetadata
5761
5762	Message_ *string `locationName:"message" type:"string"`
5763}
5764
5765// String returns the string representation
5766func (s AttributeLimitExceededException) String() string {
5767	return awsutil.Prettify(s)
5768}
5769
5770// GoString returns the string representation
5771func (s AttributeLimitExceededException) GoString() string {
5772	return s.String()
5773}
5774
5775func newErrorAttributeLimitExceededException(v protocol.ResponseMetadata) error {
5776	return &AttributeLimitExceededException{
5777		respMetadata: v,
5778	}
5779}
5780
5781// Code returns the exception type name.
5782func (s AttributeLimitExceededException) Code() string {
5783	return "AttributeLimitExceededException"
5784}
5785
5786// Message returns the exception's message.
5787func (s AttributeLimitExceededException) Message() string {
5788	if s.Message_ != nil {
5789		return *s.Message_
5790	}
5791	return ""
5792}
5793
5794// OrigErr always returns nil, satisfies awserr.Error interface.
5795func (s AttributeLimitExceededException) OrigErr() error {
5796	return nil
5797}
5798
5799func (s AttributeLimitExceededException) Error() string {
5800	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
5801}
5802
5803// Status code returns the HTTP status code for the request's response error.
5804func (s AttributeLimitExceededException) StatusCode() int {
5805	return s.respMetadata.StatusCode
5806}
5807
5808// RequestID returns the service's response RequestID for request.
5809func (s AttributeLimitExceededException) RequestID() string {
5810	return s.respMetadata.RequestID
5811}
5812
5813// The details of the Auto Scaling group for the capacity provider.
5814type AutoScalingGroupProvider struct {
5815	_ struct{} `type:"structure"`
5816
5817	// The Amazon Resource Name (ARN) that identifies the Auto Scaling group.
5818	//
5819	// AutoScalingGroupArn is a required field
5820	AutoScalingGroupArn *string `locationName:"autoScalingGroupArn" type:"string" required:"true"`
5821
5822	// The managed scaling settings for the Auto Scaling group capacity provider.
5823	ManagedScaling *ManagedScaling `locationName:"managedScaling" type:"structure"`
5824
5825	// The managed termination protection setting to use for the Auto Scaling group
5826	// capacity provider. This determines whether the Auto Scaling group has managed
5827	// termination protection.
5828	//
5829	// When using managed termination protection, managed scaling must also be used
5830	// otherwise managed termination protection will not work.
5831	//
5832	// When managed termination protection is enabled, Amazon ECS prevents the Amazon
5833	// EC2 instances in an Auto Scaling group that contain tasks from being terminated
5834	// during a scale-in action. The Auto Scaling group and each instance in the
5835	// Auto Scaling group must have instance protection from scale-in actions enabled
5836	// as well. For more information, see Instance Protection (https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection)
5837	// in the AWS Auto Scaling User Guide.
5838	//
5839	// When managed termination protection is disabled, your Amazon EC2 instances
5840	// are not protected from termination when the Auto Scaling group scales in.
5841	ManagedTerminationProtection *string `locationName:"managedTerminationProtection" type:"string" enum:"ManagedTerminationProtection"`
5842}
5843
5844// String returns the string representation
5845func (s AutoScalingGroupProvider) String() string {
5846	return awsutil.Prettify(s)
5847}
5848
5849// GoString returns the string representation
5850func (s AutoScalingGroupProvider) GoString() string {
5851	return s.String()
5852}
5853
5854// Validate inspects the fields of the type to determine if they are valid.
5855func (s *AutoScalingGroupProvider) Validate() error {
5856	invalidParams := request.ErrInvalidParams{Context: "AutoScalingGroupProvider"}
5857	if s.AutoScalingGroupArn == nil {
5858		invalidParams.Add(request.NewErrParamRequired("AutoScalingGroupArn"))
5859	}
5860	if s.ManagedScaling != nil {
5861		if err := s.ManagedScaling.Validate(); err != nil {
5862			invalidParams.AddNested("ManagedScaling", err.(request.ErrInvalidParams))
5863		}
5864	}
5865
5866	if invalidParams.Len() > 0 {
5867		return invalidParams
5868	}
5869	return nil
5870}
5871
5872// SetAutoScalingGroupArn sets the AutoScalingGroupArn field's value.
5873func (s *AutoScalingGroupProvider) SetAutoScalingGroupArn(v string) *AutoScalingGroupProvider {
5874	s.AutoScalingGroupArn = &v
5875	return s
5876}
5877
5878// SetManagedScaling sets the ManagedScaling field's value.
5879func (s *AutoScalingGroupProvider) SetManagedScaling(v *ManagedScaling) *AutoScalingGroupProvider {
5880	s.ManagedScaling = v
5881	return s
5882}
5883
5884// SetManagedTerminationProtection sets the ManagedTerminationProtection field's value.
5885func (s *AutoScalingGroupProvider) SetManagedTerminationProtection(v string) *AutoScalingGroupProvider {
5886	s.ManagedTerminationProtection = &v
5887	return s
5888}
5889
5890// An object representing the networking details for a task or service.
5891type AwsVpcConfiguration struct {
5892	_ struct{} `type:"structure"`
5893
5894	// Whether the task's elastic network interface receives a public IP address.
5895	// The default value is DISABLED.
5896	AssignPublicIp *string `locationName:"assignPublicIp" type:"string" enum:"AssignPublicIp"`
5897
5898	// The security groups associated with the task or service. If you do not specify
5899	// a security group, the default security group for the VPC is used. There is
5900	// a limit of 5 security groups that can be specified per AwsVpcConfiguration.
5901	//
5902	// All specified security groups must be from the same VPC.
5903	SecurityGroups []*string `locationName:"securityGroups" type:"list"`
5904
5905	// The subnets associated with the task or service. There is a limit of 16 subnets
5906	// that can be specified per AwsVpcConfiguration.
5907	//
5908	// All specified subnets must be from the same VPC.
5909	//
5910	// Subnets is a required field
5911	Subnets []*string `locationName:"subnets" type:"list" required:"true"`
5912}
5913
5914// String returns the string representation
5915func (s AwsVpcConfiguration) String() string {
5916	return awsutil.Prettify(s)
5917}
5918
5919// GoString returns the string representation
5920func (s AwsVpcConfiguration) GoString() string {
5921	return s.String()
5922}
5923
5924// Validate inspects the fields of the type to determine if they are valid.
5925func (s *AwsVpcConfiguration) Validate() error {
5926	invalidParams := request.ErrInvalidParams{Context: "AwsVpcConfiguration"}
5927	if s.Subnets == nil {
5928		invalidParams.Add(request.NewErrParamRequired("Subnets"))
5929	}
5930
5931	if invalidParams.Len() > 0 {
5932		return invalidParams
5933	}
5934	return nil
5935}
5936
5937// SetAssignPublicIp sets the AssignPublicIp field's value.
5938func (s *AwsVpcConfiguration) SetAssignPublicIp(v string) *AwsVpcConfiguration {
5939	s.AssignPublicIp = &v
5940	return s
5941}
5942
5943// SetSecurityGroups sets the SecurityGroups field's value.
5944func (s *AwsVpcConfiguration) SetSecurityGroups(v []*string) *AwsVpcConfiguration {
5945	s.SecurityGroups = v
5946	return s
5947}
5948
5949// SetSubnets sets the Subnets field's value.
5950func (s *AwsVpcConfiguration) SetSubnets(v []*string) *AwsVpcConfiguration {
5951	s.Subnets = v
5952	return s
5953}
5954
5955// Your AWS account has been blocked. For more information, contact AWS Support
5956// (http://aws.amazon.com/contact-us/).
5957type BlockedException struct {
5958	_            struct{} `type:"structure"`
5959	respMetadata protocol.ResponseMetadata
5960
5961	Message_ *string `locationName:"message" type:"string"`
5962}
5963
5964// String returns the string representation
5965func (s BlockedException) String() string {
5966	return awsutil.Prettify(s)
5967}
5968
5969// GoString returns the string representation
5970func (s BlockedException) GoString() string {
5971	return s.String()
5972}
5973
5974func newErrorBlockedException(v protocol.ResponseMetadata) error {
5975	return &BlockedException{
5976		respMetadata: v,
5977	}
5978}
5979
5980// Code returns the exception type name.
5981func (s BlockedException) Code() string {
5982	return "BlockedException"
5983}
5984
5985// Message returns the exception's message.
5986func (s BlockedException) Message() string {
5987	if s.Message_ != nil {
5988		return *s.Message_
5989	}
5990	return ""
5991}
5992
5993// OrigErr always returns nil, satisfies awserr.Error interface.
5994func (s BlockedException) OrigErr() error {
5995	return nil
5996}
5997
5998func (s BlockedException) Error() string {
5999	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6000}
6001
6002// Status code returns the HTTP status code for the request's response error.
6003func (s BlockedException) StatusCode() int {
6004	return s.respMetadata.StatusCode
6005}
6006
6007// RequestID returns the service's response RequestID for request.
6008func (s BlockedException) RequestID() string {
6009	return s.respMetadata.RequestID
6010}
6011
6012// The details of a capacity provider.
6013type CapacityProvider struct {
6014	_ struct{} `type:"structure"`
6015
6016	// The Auto Scaling group settings for the capacity provider.
6017	AutoScalingGroupProvider *AutoScalingGroupProvider `locationName:"autoScalingGroupProvider" type:"structure"`
6018
6019	// The Amazon Resource Name (ARN) that identifies the capacity provider.
6020	CapacityProviderArn *string `locationName:"capacityProviderArn" type:"string"`
6021
6022	// The name of the capacity provider.
6023	Name *string `locationName:"name" type:"string"`
6024
6025	// The current status of the capacity provider. Only capacity providers in an
6026	// ACTIVE state can be used in a cluster.
6027	Status *string `locationName:"status" type:"string" enum:"CapacityProviderStatus"`
6028
6029	// The metadata that you apply to the capacity provider to help you categorize
6030	// and organize it. Each tag consists of a key and an optional value, both of
6031	// which you define.
6032	//
6033	// The following basic restrictions apply to tags:
6034	//
6035	//    * Maximum number of tags per resource - 50
6036	//
6037	//    * For each resource, each tag key must be unique, and each tag key can
6038	//    have only one value.
6039	//
6040	//    * Maximum key length - 128 Unicode characters in UTF-8
6041	//
6042	//    * Maximum value length - 256 Unicode characters in UTF-8
6043	//
6044	//    * If your tagging schema is used across multiple services and resources,
6045	//    remember that other services may have restrictions on allowed characters.
6046	//    Generally allowed characters are: letters, numbers, and spaces representable
6047	//    in UTF-8, and the following characters: + - = . _ : / @.
6048	//
6049	//    * Tag keys and values are case-sensitive.
6050	//
6051	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
6052	//    as a prefix for either keys or values as it is reserved for AWS use. You
6053	//    cannot edit or delete tag keys or values with this prefix. Tags with this
6054	//    prefix do not count against your tags per resource limit.
6055	Tags []*Tag `locationName:"tags" type:"list"`
6056}
6057
6058// String returns the string representation
6059func (s CapacityProvider) String() string {
6060	return awsutil.Prettify(s)
6061}
6062
6063// GoString returns the string representation
6064func (s CapacityProvider) GoString() string {
6065	return s.String()
6066}
6067
6068// SetAutoScalingGroupProvider sets the AutoScalingGroupProvider field's value.
6069func (s *CapacityProvider) SetAutoScalingGroupProvider(v *AutoScalingGroupProvider) *CapacityProvider {
6070	s.AutoScalingGroupProvider = v
6071	return s
6072}
6073
6074// SetCapacityProviderArn sets the CapacityProviderArn field's value.
6075func (s *CapacityProvider) SetCapacityProviderArn(v string) *CapacityProvider {
6076	s.CapacityProviderArn = &v
6077	return s
6078}
6079
6080// SetName sets the Name field's value.
6081func (s *CapacityProvider) SetName(v string) *CapacityProvider {
6082	s.Name = &v
6083	return s
6084}
6085
6086// SetStatus sets the Status field's value.
6087func (s *CapacityProvider) SetStatus(v string) *CapacityProvider {
6088	s.Status = &v
6089	return s
6090}
6091
6092// SetTags sets the Tags field's value.
6093func (s *CapacityProvider) SetTags(v []*Tag) *CapacityProvider {
6094	s.Tags = v
6095	return s
6096}
6097
6098// The details of a capacity provider strategy.
6099type CapacityProviderStrategyItem struct {
6100	_ struct{} `type:"structure"`
6101
6102	// The base value designates how many tasks, at a minimum, to run on the specified
6103	// capacity provider. Only one capacity provider in a capacity provider strategy
6104	// can have a base defined.
6105	Base *int64 `locationName:"base" type:"integer"`
6106
6107	// The short name or full Amazon Resource Name (ARN) of the capacity provider.
6108	//
6109	// CapacityProvider is a required field
6110	CapacityProvider *string `locationName:"capacityProvider" type:"string" required:"true"`
6111
6112	// The weight value designates the relative percentage of the total number of
6113	// tasks launched that should use the specified capacity provider.
6114	//
6115	// For example, if you have a strategy that contains two capacity providers
6116	// and both have a weight of 1, then when the base is satisfied, the tasks will
6117	// be split evenly across the two capacity providers. Using that same logic,
6118	// if you specify a weight of 1 for capacityProviderA and a weight of 4 for
6119	// capacityProviderB, then for every one task that is run using capacityProviderA,
6120	// four tasks would use capacityProviderB.
6121	Weight *int64 `locationName:"weight" type:"integer"`
6122}
6123
6124// String returns the string representation
6125func (s CapacityProviderStrategyItem) String() string {
6126	return awsutil.Prettify(s)
6127}
6128
6129// GoString returns the string representation
6130func (s CapacityProviderStrategyItem) GoString() string {
6131	return s.String()
6132}
6133
6134// Validate inspects the fields of the type to determine if they are valid.
6135func (s *CapacityProviderStrategyItem) Validate() error {
6136	invalidParams := request.ErrInvalidParams{Context: "CapacityProviderStrategyItem"}
6137	if s.CapacityProvider == nil {
6138		invalidParams.Add(request.NewErrParamRequired("CapacityProvider"))
6139	}
6140
6141	if invalidParams.Len() > 0 {
6142		return invalidParams
6143	}
6144	return nil
6145}
6146
6147// SetBase sets the Base field's value.
6148func (s *CapacityProviderStrategyItem) SetBase(v int64) *CapacityProviderStrategyItem {
6149	s.Base = &v
6150	return s
6151}
6152
6153// SetCapacityProvider sets the CapacityProvider field's value.
6154func (s *CapacityProviderStrategyItem) SetCapacityProvider(v string) *CapacityProviderStrategyItem {
6155	s.CapacityProvider = &v
6156	return s
6157}
6158
6159// SetWeight sets the Weight field's value.
6160func (s *CapacityProviderStrategyItem) SetWeight(v int64) *CapacityProviderStrategyItem {
6161	s.Weight = &v
6162	return s
6163}
6164
6165// These errors are usually caused by a client action, such as using an action
6166// or resource on behalf of a user that doesn't have permissions to use the
6167// action or resource, or specifying an identifier that is not valid.
6168type ClientException struct {
6169	_            struct{} `type:"structure"`
6170	respMetadata protocol.ResponseMetadata
6171
6172	Message_ *string `locationName:"message" type:"string"`
6173}
6174
6175// String returns the string representation
6176func (s ClientException) String() string {
6177	return awsutil.Prettify(s)
6178}
6179
6180// GoString returns the string representation
6181func (s ClientException) GoString() string {
6182	return s.String()
6183}
6184
6185func newErrorClientException(v protocol.ResponseMetadata) error {
6186	return &ClientException{
6187		respMetadata: v,
6188	}
6189}
6190
6191// Code returns the exception type name.
6192func (s ClientException) Code() string {
6193	return "ClientException"
6194}
6195
6196// Message returns the exception's message.
6197func (s ClientException) Message() string {
6198	if s.Message_ != nil {
6199		return *s.Message_
6200	}
6201	return ""
6202}
6203
6204// OrigErr always returns nil, satisfies awserr.Error interface.
6205func (s ClientException) OrigErr() error {
6206	return nil
6207}
6208
6209func (s ClientException) Error() string {
6210	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6211}
6212
6213// Status code returns the HTTP status code for the request's response error.
6214func (s ClientException) StatusCode() int {
6215	return s.respMetadata.StatusCode
6216}
6217
6218// RequestID returns the service's response RequestID for request.
6219func (s ClientException) RequestID() string {
6220	return s.respMetadata.RequestID
6221}
6222
6223// A regional grouping of one or more container instances on which you can run
6224// task requests. Each account receives a default cluster the first time you
6225// use the Amazon ECS service, but you may also create other clusters. Clusters
6226// may contain more than one instance type simultaneously.
6227type Cluster struct {
6228	_ struct{} `type:"structure"`
6229
6230	// The number of services that are running on the cluster in an ACTIVE state.
6231	// You can view these services with ListServices.
6232	ActiveServicesCount *int64 `locationName:"activeServicesCount" type:"integer"`
6233
6234	// The resources attached to a cluster. When using a capacity provider with
6235	// a cluster, the Auto Scaling plan that is created will be returned as a cluster
6236	// attachment.
6237	Attachments []*Attachment `locationName:"attachments" type:"list"`
6238
6239	// The status of the capacity providers associated with the cluster. The following
6240	// are the states that will be returned:
6241	//
6242	// UPDATE_IN_PROGRESS
6243	//
6244	// The available capacity providers for the cluster are updating. This occurs
6245	// when the Auto Scaling plan is provisioning or deprovisioning.
6246	//
6247	// UPDATE_COMPLETE
6248	//
6249	// The capacity providers have successfully updated.
6250	//
6251	// UPDATE_FAILED
6252	//
6253	// The capacity provider updates failed.
6254	AttachmentsStatus *string `locationName:"attachmentsStatus" type:"string"`
6255
6256	// The capacity providers associated with the cluster.
6257	CapacityProviders []*string `locationName:"capacityProviders" type:"list"`
6258
6259	// The Amazon Resource Name (ARN) that identifies the cluster. The ARN contains
6260	// the arn:aws:ecs namespace, followed by the Region of the cluster, the AWS
6261	// account ID of the cluster owner, the cluster namespace, and then the cluster
6262	// name. For example, arn:aws:ecs:region:012345678910:cluster/test.
6263	ClusterArn *string `locationName:"clusterArn" type:"string"`
6264
6265	// A user-generated string that you use to identify your cluster.
6266	ClusterName *string `locationName:"clusterName" type:"string"`
6267
6268	// The default capacity provider strategy for the cluster. When services or
6269	// tasks are run in the cluster with no launch type or capacity provider strategy
6270	// specified, the default capacity provider strategy is used.
6271	DefaultCapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"defaultCapacityProviderStrategy" type:"list"`
6272
6273	// The number of tasks in the cluster that are in the PENDING state.
6274	PendingTasksCount *int64 `locationName:"pendingTasksCount" type:"integer"`
6275
6276	// The number of container instances registered into the cluster. This includes
6277	// container instances in both ACTIVE and DRAINING status.
6278	RegisteredContainerInstancesCount *int64 `locationName:"registeredContainerInstancesCount" type:"integer"`
6279
6280	// The number of tasks in the cluster that are in the RUNNING state.
6281	RunningTasksCount *int64 `locationName:"runningTasksCount" type:"integer"`
6282
6283	// The settings for the cluster. This parameter indicates whether CloudWatch
6284	// Container Insights is enabled or disabled for a cluster.
6285	Settings []*ClusterSetting `locationName:"settings" type:"list"`
6286
6287	// Additional information about your clusters that are separated by launch type,
6288	// including:
6289	//
6290	//    * runningEC2TasksCount
6291	//
6292	//    * RunningFargateTasksCount
6293	//
6294	//    * pendingEC2TasksCount
6295	//
6296	//    * pendingFargateTasksCount
6297	//
6298	//    * activeEC2ServiceCount
6299	//
6300	//    * activeFargateServiceCount
6301	//
6302	//    * drainingEC2ServiceCount
6303	//
6304	//    * drainingFargateServiceCount
6305	Statistics []*KeyValuePair `locationName:"statistics" type:"list"`
6306
6307	// The status of the cluster. The following are the possible states that will
6308	// be returned.
6309	//
6310	// ACTIVE
6311	//
6312	// The cluster is ready to accept tasks and if applicable you can register container
6313	// instances with the cluster.
6314	//
6315	// PROVISIONING
6316	//
6317	// The cluster has capacity providers associated with it and the resources needed
6318	// for the capacity provider are being created.
6319	//
6320	// DEPROVISIONING
6321	//
6322	// The cluster has capacity providers associated with it and the resources needed
6323	// for the capacity provider are being deleted.
6324	//
6325	// FAILED
6326	//
6327	// The cluster has capacity providers associated with it and the resources needed
6328	// for the capacity provider have failed to create.
6329	//
6330	// INACTIVE
6331	//
6332	// The cluster has been deleted. Clusters with an INACTIVE status may remain
6333	// discoverable in your account for a period of time. However, this behavior
6334	// is subject to change in the future, so you should not rely on INACTIVE clusters
6335	// persisting.
6336	Status *string `locationName:"status" type:"string"`
6337
6338	// The metadata that you apply to the cluster to help you categorize and organize
6339	// them. Each tag consists of a key and an optional value, both of which you
6340	// define.
6341	//
6342	// The following basic restrictions apply to tags:
6343	//
6344	//    * Maximum number of tags per resource - 50
6345	//
6346	//    * For each resource, each tag key must be unique, and each tag key can
6347	//    have only one value.
6348	//
6349	//    * Maximum key length - 128 Unicode characters in UTF-8
6350	//
6351	//    * Maximum value length - 256 Unicode characters in UTF-8
6352	//
6353	//    * If your tagging schema is used across multiple services and resources,
6354	//    remember that other services may have restrictions on allowed characters.
6355	//    Generally allowed characters are: letters, numbers, and spaces representable
6356	//    in UTF-8, and the following characters: + - = . _ : / @.
6357	//
6358	//    * Tag keys and values are case-sensitive.
6359	//
6360	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
6361	//    as a prefix for either keys or values as it is reserved for AWS use. You
6362	//    cannot edit or delete tag keys or values with this prefix. Tags with this
6363	//    prefix do not count against your tags per resource limit.
6364	Tags []*Tag `locationName:"tags" type:"list"`
6365}
6366
6367// String returns the string representation
6368func (s Cluster) String() string {
6369	return awsutil.Prettify(s)
6370}
6371
6372// GoString returns the string representation
6373func (s Cluster) GoString() string {
6374	return s.String()
6375}
6376
6377// SetActiveServicesCount sets the ActiveServicesCount field's value.
6378func (s *Cluster) SetActiveServicesCount(v int64) *Cluster {
6379	s.ActiveServicesCount = &v
6380	return s
6381}
6382
6383// SetAttachments sets the Attachments field's value.
6384func (s *Cluster) SetAttachments(v []*Attachment) *Cluster {
6385	s.Attachments = v
6386	return s
6387}
6388
6389// SetAttachmentsStatus sets the AttachmentsStatus field's value.
6390func (s *Cluster) SetAttachmentsStatus(v string) *Cluster {
6391	s.AttachmentsStatus = &v
6392	return s
6393}
6394
6395// SetCapacityProviders sets the CapacityProviders field's value.
6396func (s *Cluster) SetCapacityProviders(v []*string) *Cluster {
6397	s.CapacityProviders = v
6398	return s
6399}
6400
6401// SetClusterArn sets the ClusterArn field's value.
6402func (s *Cluster) SetClusterArn(v string) *Cluster {
6403	s.ClusterArn = &v
6404	return s
6405}
6406
6407// SetClusterName sets the ClusterName field's value.
6408func (s *Cluster) SetClusterName(v string) *Cluster {
6409	s.ClusterName = &v
6410	return s
6411}
6412
6413// SetDefaultCapacityProviderStrategy sets the DefaultCapacityProviderStrategy field's value.
6414func (s *Cluster) SetDefaultCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *Cluster {
6415	s.DefaultCapacityProviderStrategy = v
6416	return s
6417}
6418
6419// SetPendingTasksCount sets the PendingTasksCount field's value.
6420func (s *Cluster) SetPendingTasksCount(v int64) *Cluster {
6421	s.PendingTasksCount = &v
6422	return s
6423}
6424
6425// SetRegisteredContainerInstancesCount sets the RegisteredContainerInstancesCount field's value.
6426func (s *Cluster) SetRegisteredContainerInstancesCount(v int64) *Cluster {
6427	s.RegisteredContainerInstancesCount = &v
6428	return s
6429}
6430
6431// SetRunningTasksCount sets the RunningTasksCount field's value.
6432func (s *Cluster) SetRunningTasksCount(v int64) *Cluster {
6433	s.RunningTasksCount = &v
6434	return s
6435}
6436
6437// SetSettings sets the Settings field's value.
6438func (s *Cluster) SetSettings(v []*ClusterSetting) *Cluster {
6439	s.Settings = v
6440	return s
6441}
6442
6443// SetStatistics sets the Statistics field's value.
6444func (s *Cluster) SetStatistics(v []*KeyValuePair) *Cluster {
6445	s.Statistics = v
6446	return s
6447}
6448
6449// SetStatus sets the Status field's value.
6450func (s *Cluster) SetStatus(v string) *Cluster {
6451	s.Status = &v
6452	return s
6453}
6454
6455// SetTags sets the Tags field's value.
6456func (s *Cluster) SetTags(v []*Tag) *Cluster {
6457	s.Tags = v
6458	return s
6459}
6460
6461// You cannot delete a cluster that has registered container instances. First,
6462// deregister the container instances before you can delete the cluster. For
6463// more information, see DeregisterContainerInstance.
6464type ClusterContainsContainerInstancesException struct {
6465	_            struct{} `type:"structure"`
6466	respMetadata protocol.ResponseMetadata
6467
6468	Message_ *string `locationName:"message" type:"string"`
6469}
6470
6471// String returns the string representation
6472func (s ClusterContainsContainerInstancesException) String() string {
6473	return awsutil.Prettify(s)
6474}
6475
6476// GoString returns the string representation
6477func (s ClusterContainsContainerInstancesException) GoString() string {
6478	return s.String()
6479}
6480
6481func newErrorClusterContainsContainerInstancesException(v protocol.ResponseMetadata) error {
6482	return &ClusterContainsContainerInstancesException{
6483		respMetadata: v,
6484	}
6485}
6486
6487// Code returns the exception type name.
6488func (s ClusterContainsContainerInstancesException) Code() string {
6489	return "ClusterContainsContainerInstancesException"
6490}
6491
6492// Message returns the exception's message.
6493func (s ClusterContainsContainerInstancesException) Message() string {
6494	if s.Message_ != nil {
6495		return *s.Message_
6496	}
6497	return ""
6498}
6499
6500// OrigErr always returns nil, satisfies awserr.Error interface.
6501func (s ClusterContainsContainerInstancesException) OrigErr() error {
6502	return nil
6503}
6504
6505func (s ClusterContainsContainerInstancesException) Error() string {
6506	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6507}
6508
6509// Status code returns the HTTP status code for the request's response error.
6510func (s ClusterContainsContainerInstancesException) StatusCode() int {
6511	return s.respMetadata.StatusCode
6512}
6513
6514// RequestID returns the service's response RequestID for request.
6515func (s ClusterContainsContainerInstancesException) RequestID() string {
6516	return s.respMetadata.RequestID
6517}
6518
6519// You cannot delete a cluster that contains services. First, update the service
6520// to reduce its desired task count to 0 and then delete the service. For more
6521// information, see UpdateService and DeleteService.
6522type ClusterContainsServicesException struct {
6523	_            struct{} `type:"structure"`
6524	respMetadata protocol.ResponseMetadata
6525
6526	Message_ *string `locationName:"message" type:"string"`
6527}
6528
6529// String returns the string representation
6530func (s ClusterContainsServicesException) String() string {
6531	return awsutil.Prettify(s)
6532}
6533
6534// GoString returns the string representation
6535func (s ClusterContainsServicesException) GoString() string {
6536	return s.String()
6537}
6538
6539func newErrorClusterContainsServicesException(v protocol.ResponseMetadata) error {
6540	return &ClusterContainsServicesException{
6541		respMetadata: v,
6542	}
6543}
6544
6545// Code returns the exception type name.
6546func (s ClusterContainsServicesException) Code() string {
6547	return "ClusterContainsServicesException"
6548}
6549
6550// Message returns the exception's message.
6551func (s ClusterContainsServicesException) Message() string {
6552	if s.Message_ != nil {
6553		return *s.Message_
6554	}
6555	return ""
6556}
6557
6558// OrigErr always returns nil, satisfies awserr.Error interface.
6559func (s ClusterContainsServicesException) OrigErr() error {
6560	return nil
6561}
6562
6563func (s ClusterContainsServicesException) Error() string {
6564	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6565}
6566
6567// Status code returns the HTTP status code for the request's response error.
6568func (s ClusterContainsServicesException) StatusCode() int {
6569	return s.respMetadata.StatusCode
6570}
6571
6572// RequestID returns the service's response RequestID for request.
6573func (s ClusterContainsServicesException) RequestID() string {
6574	return s.respMetadata.RequestID
6575}
6576
6577// You cannot delete a cluster that has active tasks.
6578type ClusterContainsTasksException struct {
6579	_            struct{} `type:"structure"`
6580	respMetadata protocol.ResponseMetadata
6581
6582	Message_ *string `locationName:"message" type:"string"`
6583}
6584
6585// String returns the string representation
6586func (s ClusterContainsTasksException) String() string {
6587	return awsutil.Prettify(s)
6588}
6589
6590// GoString returns the string representation
6591func (s ClusterContainsTasksException) GoString() string {
6592	return s.String()
6593}
6594
6595func newErrorClusterContainsTasksException(v protocol.ResponseMetadata) error {
6596	return &ClusterContainsTasksException{
6597		respMetadata: v,
6598	}
6599}
6600
6601// Code returns the exception type name.
6602func (s ClusterContainsTasksException) Code() string {
6603	return "ClusterContainsTasksException"
6604}
6605
6606// Message returns the exception's message.
6607func (s ClusterContainsTasksException) Message() string {
6608	if s.Message_ != nil {
6609		return *s.Message_
6610	}
6611	return ""
6612}
6613
6614// OrigErr always returns nil, satisfies awserr.Error interface.
6615func (s ClusterContainsTasksException) OrigErr() error {
6616	return nil
6617}
6618
6619func (s ClusterContainsTasksException) Error() string {
6620	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6621}
6622
6623// Status code returns the HTTP status code for the request's response error.
6624func (s ClusterContainsTasksException) StatusCode() int {
6625	return s.respMetadata.StatusCode
6626}
6627
6628// RequestID returns the service's response RequestID for request.
6629func (s ClusterContainsTasksException) RequestID() string {
6630	return s.respMetadata.RequestID
6631}
6632
6633// The specified cluster could not be found. You can view your available clusters
6634// with ListClusters. Amazon ECS clusters are Region-specific.
6635type ClusterNotFoundException struct {
6636	_            struct{} `type:"structure"`
6637	respMetadata protocol.ResponseMetadata
6638
6639	Message_ *string `locationName:"message" type:"string"`
6640}
6641
6642// String returns the string representation
6643func (s ClusterNotFoundException) String() string {
6644	return awsutil.Prettify(s)
6645}
6646
6647// GoString returns the string representation
6648func (s ClusterNotFoundException) GoString() string {
6649	return s.String()
6650}
6651
6652func newErrorClusterNotFoundException(v protocol.ResponseMetadata) error {
6653	return &ClusterNotFoundException{
6654		respMetadata: v,
6655	}
6656}
6657
6658// Code returns the exception type name.
6659func (s ClusterNotFoundException) Code() string {
6660	return "ClusterNotFoundException"
6661}
6662
6663// Message returns the exception's message.
6664func (s ClusterNotFoundException) Message() string {
6665	if s.Message_ != nil {
6666		return *s.Message_
6667	}
6668	return ""
6669}
6670
6671// OrigErr always returns nil, satisfies awserr.Error interface.
6672func (s ClusterNotFoundException) OrigErr() error {
6673	return nil
6674}
6675
6676func (s ClusterNotFoundException) Error() string {
6677	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
6678}
6679
6680// Status code returns the HTTP status code for the request's response error.
6681func (s ClusterNotFoundException) StatusCode() int {
6682	return s.respMetadata.StatusCode
6683}
6684
6685// RequestID returns the service's response RequestID for request.
6686func (s ClusterNotFoundException) RequestID() string {
6687	return s.respMetadata.RequestID
6688}
6689
6690// The settings to use when creating a cluster. This parameter is used to enable
6691// CloudWatch Container Insights for a cluster.
6692type ClusterSetting struct {
6693	_ struct{} `type:"structure"`
6694
6695	// The name of the cluster setting. The only supported value is containerInsights.
6696	Name *string `locationName:"name" type:"string" enum:"ClusterSettingName"`
6697
6698	// The value to set for the cluster setting. The supported values are enabled
6699	// and disabled. If enabled is specified, CloudWatch Container Insights will
6700	// be enabled for the cluster, otherwise it will be disabled unless the containerInsights
6701	// account setting is enabled. If a cluster value is specified, it will override
6702	// the containerInsights value set with PutAccountSetting or PutAccountSettingDefault.
6703	Value *string `locationName:"value" type:"string"`
6704}
6705
6706// String returns the string representation
6707func (s ClusterSetting) String() string {
6708	return awsutil.Prettify(s)
6709}
6710
6711// GoString returns the string representation
6712func (s ClusterSetting) GoString() string {
6713	return s.String()
6714}
6715
6716// SetName sets the Name field's value.
6717func (s *ClusterSetting) SetName(v string) *ClusterSetting {
6718	s.Name = &v
6719	return s
6720}
6721
6722// SetValue sets the Value field's value.
6723func (s *ClusterSetting) SetValue(v string) *ClusterSetting {
6724	s.Value = &v
6725	return s
6726}
6727
6728// A Docker container that is part of a task.
6729type Container struct {
6730	_ struct{} `type:"structure"`
6731
6732	// The Amazon Resource Name (ARN) of the container.
6733	ContainerArn *string `locationName:"containerArn" type:"string"`
6734
6735	// The number of CPU units set for the container. The value will be 0 if no
6736	// value was specified in the container definition when the task definition
6737	// was registered.
6738	Cpu *string `locationName:"cpu" type:"string"`
6739
6740	// The exit code returned from the container.
6741	ExitCode *int64 `locationName:"exitCode" type:"integer"`
6742
6743	// The IDs of each GPU assigned to the container.
6744	GpuIds []*string `locationName:"gpuIds" type:"list"`
6745
6746	// The health status of the container. If health checks are not configured for
6747	// this container in its task definition, then it reports the health status
6748	// as UNKNOWN.
6749	HealthStatus *string `locationName:"healthStatus" type:"string" enum:"HealthStatus"`
6750
6751	// The image used for the container.
6752	Image *string `locationName:"image" type:"string"`
6753
6754	// The container image manifest digest.
6755	//
6756	// The imageDigest is only returned if the container is using an image hosted
6757	// in Amazon ECR, otherwise it is omitted.
6758	ImageDigest *string `locationName:"imageDigest" type:"string"`
6759
6760	// The last known status of the container.
6761	LastStatus *string `locationName:"lastStatus" type:"string"`
6762
6763	// The hard limit (in MiB) of memory set for the container.
6764	Memory *string `locationName:"memory" type:"string"`
6765
6766	// The soft limit (in MiB) of memory set for the container.
6767	MemoryReservation *string `locationName:"memoryReservation" type:"string"`
6768
6769	// The name of the container.
6770	Name *string `locationName:"name" type:"string"`
6771
6772	// The network bindings associated with the container.
6773	NetworkBindings []*NetworkBinding `locationName:"networkBindings" type:"list"`
6774
6775	// The network interfaces associated with the container.
6776	NetworkInterfaces []*NetworkInterface `locationName:"networkInterfaces" type:"list"`
6777
6778	// A short (255 max characters) human-readable string to provide additional
6779	// details about a running or stopped container.
6780	Reason *string `locationName:"reason" type:"string"`
6781
6782	// The ID of the Docker container.
6783	RuntimeId *string `locationName:"runtimeId" type:"string"`
6784
6785	// The ARN of the task.
6786	TaskArn *string `locationName:"taskArn" type:"string"`
6787}
6788
6789// String returns the string representation
6790func (s Container) String() string {
6791	return awsutil.Prettify(s)
6792}
6793
6794// GoString returns the string representation
6795func (s Container) GoString() string {
6796	return s.String()
6797}
6798
6799// SetContainerArn sets the ContainerArn field's value.
6800func (s *Container) SetContainerArn(v string) *Container {
6801	s.ContainerArn = &v
6802	return s
6803}
6804
6805// SetCpu sets the Cpu field's value.
6806func (s *Container) SetCpu(v string) *Container {
6807	s.Cpu = &v
6808	return s
6809}
6810
6811// SetExitCode sets the ExitCode field's value.
6812func (s *Container) SetExitCode(v int64) *Container {
6813	s.ExitCode = &v
6814	return s
6815}
6816
6817// SetGpuIds sets the GpuIds field's value.
6818func (s *Container) SetGpuIds(v []*string) *Container {
6819	s.GpuIds = v
6820	return s
6821}
6822
6823// SetHealthStatus sets the HealthStatus field's value.
6824func (s *Container) SetHealthStatus(v string) *Container {
6825	s.HealthStatus = &v
6826	return s
6827}
6828
6829// SetImage sets the Image field's value.
6830func (s *Container) SetImage(v string) *Container {
6831	s.Image = &v
6832	return s
6833}
6834
6835// SetImageDigest sets the ImageDigest field's value.
6836func (s *Container) SetImageDigest(v string) *Container {
6837	s.ImageDigest = &v
6838	return s
6839}
6840
6841// SetLastStatus sets the LastStatus field's value.
6842func (s *Container) SetLastStatus(v string) *Container {
6843	s.LastStatus = &v
6844	return s
6845}
6846
6847// SetMemory sets the Memory field's value.
6848func (s *Container) SetMemory(v string) *Container {
6849	s.Memory = &v
6850	return s
6851}
6852
6853// SetMemoryReservation sets the MemoryReservation field's value.
6854func (s *Container) SetMemoryReservation(v string) *Container {
6855	s.MemoryReservation = &v
6856	return s
6857}
6858
6859// SetName sets the Name field's value.
6860func (s *Container) SetName(v string) *Container {
6861	s.Name = &v
6862	return s
6863}
6864
6865// SetNetworkBindings sets the NetworkBindings field's value.
6866func (s *Container) SetNetworkBindings(v []*NetworkBinding) *Container {
6867	s.NetworkBindings = v
6868	return s
6869}
6870
6871// SetNetworkInterfaces sets the NetworkInterfaces field's value.
6872func (s *Container) SetNetworkInterfaces(v []*NetworkInterface) *Container {
6873	s.NetworkInterfaces = v
6874	return s
6875}
6876
6877// SetReason sets the Reason field's value.
6878func (s *Container) SetReason(v string) *Container {
6879	s.Reason = &v
6880	return s
6881}
6882
6883// SetRuntimeId sets the RuntimeId field's value.
6884func (s *Container) SetRuntimeId(v string) *Container {
6885	s.RuntimeId = &v
6886	return s
6887}
6888
6889// SetTaskArn sets the TaskArn field's value.
6890func (s *Container) SetTaskArn(v string) *Container {
6891	s.TaskArn = &v
6892	return s
6893}
6894
6895// Container definitions are used in task definitions to describe the different
6896// containers that are launched as part of a task.
6897type ContainerDefinition struct {
6898	_ struct{} `type:"structure"`
6899
6900	// The command that is passed to the container. This parameter maps to Cmd in
6901	// the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
6902	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
6903	// and the COMMAND parameter to docker run (https://docs.docker.com/engine/reference/run/).
6904	// For more information, see https://docs.docker.com/engine/reference/builder/#cmd
6905	// (https://docs.docker.com/engine/reference/builder/#cmd). If there are multiple
6906	// arguments, each argument should be a separated string in the array.
6907	Command []*string `locationName:"command" type:"list"`
6908
6909	// The number of cpu units reserved for the container. This parameter maps to
6910	// CpuShares in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
6911	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
6912	// and the --cpu-shares option to docker run (https://docs.docker.com/engine/reference/run/).
6913	//
6914	// This field is optional for tasks using the Fargate launch type, and the only
6915	// requirement is that the total amount of CPU reserved for all containers within
6916	// a task be lower than the task-level cpu value.
6917	//
6918	// You can determine the number of CPU units that are available per EC2 instance
6919	// type by multiplying the vCPUs listed for that instance type on the Amazon
6920	// EC2 Instances (http://aws.amazon.com/ec2/instance-types/) detail page by
6921	// 1,024.
6922	//
6923	// Linux containers share unallocated CPU units with other containers on the
6924	// container instance with the same ratio as their allocated amount. For example,
6925	// if you run a single-container task on a single-core instance type with 512
6926	// CPU units specified for that container, and that is the only task running
6927	// on the container instance, that container could use the full 1,024 CPU unit
6928	// share at any given time. However, if you launched another copy of the same
6929	// task on that container instance, each task would be guaranteed a minimum
6930	// of 512 CPU units when needed, and each container could float to higher CPU
6931	// usage if the other container was not using it, but if both tasks were 100%
6932	// active all of the time, they would be limited to 512 CPU units.
6933	//
6934	// On Linux container instances, the Docker daemon on the container instance
6935	// uses the CPU value to calculate the relative CPU share ratios for running
6936	// containers. For more information, see CPU share constraint (https://docs.docker.com/engine/reference/run/#cpu-share-constraint)
6937	// in the Docker documentation. The minimum valid CPU share value that the Linux
6938	// kernel allows is 2. However, the CPU parameter is not required, and you can
6939	// use CPU values below 2 in your container definitions. For CPU values below
6940	// 2 (including null), the behavior varies based on your Amazon ECS container
6941	// agent version:
6942	//
6943	//    * Agent versions less than or equal to 1.1.0: Null and zero CPU values
6944	//    are passed to Docker as 0, which Docker then converts to 1,024 CPU shares.
6945	//    CPU values of 1 are passed to Docker as 1, which the Linux kernel converts
6946	//    to two CPU shares.
6947	//
6948	//    * Agent versions greater than or equal to 1.2.0: Null, zero, and CPU values
6949	//    of 1 are passed to Docker as 2.
6950	//
6951	// On Windows container instances, the CPU limit is enforced as an absolute
6952	// limit, or a quota. Windows containers only have access to the specified amount
6953	// of CPU that is described in the task definition.
6954	Cpu *int64 `locationName:"cpu" type:"integer"`
6955
6956	// The dependencies defined for container startup and shutdown. A container
6957	// can contain multiple dependencies. When a dependency is defined for container
6958	// startup, for container shutdown it is reversed.
6959	//
6960	// For tasks using the EC2 launch type, the container instances require at least
6961	// version 1.26.0 of the container agent to enable container dependencies. However,
6962	// we recommend using the latest container agent version. For information about
6963	// checking your agent version and updating to the latest version, see Updating
6964	// the Amazon ECS Container Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)
6965	// in the Amazon Elastic Container Service Developer Guide. If you are using
6966	// an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1
6967	// of the ecs-init package. If your container instances are launched from version
6968	// 20190301 or later, then they contain the required versions of the container
6969	// agent and ecs-init. For more information, see Amazon ECS-optimized Linux
6970	// AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
6971	// in the Amazon Elastic Container Service Developer Guide.
6972	//
6973	// For tasks using the Fargate launch type, the task or service requires platform
6974	// version 1.3.0 or later.
6975	DependsOn []*ContainerDependency `locationName:"dependsOn" type:"list"`
6976
6977	// When this parameter is true, networking is disabled within the container.
6978	// This parameter maps to NetworkDisabled in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
6979	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/).
6980	//
6981	// This parameter is not supported for Windows containers.
6982	DisableNetworking *bool `locationName:"disableNetworking" type:"boolean"`
6983
6984	// A list of DNS search domains that are presented to the container. This parameter
6985	// maps to DnsSearch in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
6986	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
6987	// and the --dns-search option to docker run (https://docs.docker.com/engine/reference/run/).
6988	//
6989	// This parameter is not supported for Windows containers.
6990	DnsSearchDomains []*string `locationName:"dnsSearchDomains" type:"list"`
6991
6992	// A list of DNS servers that are presented to the container. This parameter
6993	// maps to Dns in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
6994	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
6995	// and the --dns option to docker run (https://docs.docker.com/engine/reference/run/).
6996	//
6997	// This parameter is not supported for Windows containers.
6998	DnsServers []*string `locationName:"dnsServers" type:"list"`
6999
7000	// A key/value map of labels to add to the container. This parameter maps to
7001	// Labels in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7002	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7003	// and the --label option to docker run (https://docs.docker.com/engine/reference/run/).
7004	// This parameter requires version 1.18 of the Docker Remote API or greater
7005	// on your container instance. To check the Docker Remote API version on your
7006	// container instance, log in to your container instance and run the following
7007	// command: sudo docker version --format '{{.Server.APIVersion}}'
7008	DockerLabels map[string]*string `locationName:"dockerLabels" type:"map"`
7009
7010	// A list of strings to provide custom labels for SELinux and AppArmor multi-level
7011	// security systems. This field is not valid for containers in tasks using the
7012	// Fargate launch type.
7013	//
7014	// With Windows containers, this parameter can be used to reference a credential
7015	// spec file when configuring a container for Active Directory authentication.
7016	// For more information, see Using gMSAs for Windows Containers (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html)
7017	// in the Amazon Elastic Container Service Developer Guide.
7018	//
7019	// This parameter maps to SecurityOpt in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7020	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7021	// and the --security-opt option to docker run (https://docs.docker.com/engine/reference/run/).
7022	//
7023	// The Amazon ECS container agent running on a container instance must register
7024	// with the ECS_SELINUX_CAPABLE=true or ECS_APPARMOR_CAPABLE=true environment
7025	// variables before containers placed on that instance can use these security
7026	// options. For more information, see Amazon ECS Container Agent Configuration
7027	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html)
7028	// in the Amazon Elastic Container Service Developer Guide.
7029	DockerSecurityOptions []*string `locationName:"dockerSecurityOptions" type:"list"`
7030
7031	//
7032	// Early versions of the Amazon ECS container agent do not properly handle entryPoint
7033	// parameters. If you have problems using entryPoint, update your container
7034	// agent or enter your commands and arguments as command array items instead.
7035	//
7036	// The entry point that is passed to the container. This parameter maps to Entrypoint
7037	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7038	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7039	// and the --entrypoint option to docker run (https://docs.docker.com/engine/reference/run/).
7040	// For more information, see https://docs.docker.com/engine/reference/builder/#entrypoint
7041	// (https://docs.docker.com/engine/reference/builder/#entrypoint).
7042	EntryPoint []*string `locationName:"entryPoint" type:"list"`
7043
7044	// The environment variables to pass to a container. This parameter maps to
7045	// Env in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7046	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7047	// and the --env option to docker run (https://docs.docker.com/engine/reference/run/).
7048	//
7049	// We do not recommend using plaintext environment variables for sensitive information,
7050	// such as credential data.
7051	Environment []*KeyValuePair `locationName:"environment" type:"list"`
7052
7053	// If the essential parameter of a container is marked as true, and that container
7054	// fails or stops for any reason, all other containers that are part of the
7055	// task are stopped. If the essential parameter of a container is marked as
7056	// false, then its failure does not affect the rest of the containers in a task.
7057	// If this parameter is omitted, a container is assumed to be essential.
7058	//
7059	// All tasks must have at least one essential container. If you have an application
7060	// that is composed of multiple containers, you should group containers that
7061	// are used for a common purpose into components, and separate the different
7062	// components into multiple task definitions. For more information, see Application
7063	// Architecture (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html)
7064	// in the Amazon Elastic Container Service Developer Guide.
7065	Essential *bool `locationName:"essential" type:"boolean"`
7066
7067	// A list of hostnames and IP address mappings to append to the /etc/hosts file
7068	// on the container. This parameter maps to ExtraHosts in the Create a container
7069	// (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section
7070	// of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and
7071	// the --add-host option to docker run (https://docs.docker.com/engine/reference/run/).
7072	//
7073	// This parameter is not supported for Windows containers or tasks that use
7074	// the awsvpc network mode.
7075	ExtraHosts []*HostEntry `locationName:"extraHosts" type:"list"`
7076
7077	// The FireLens configuration for the container. This is used to specify and
7078	// configure a log router for container logs. For more information, see Custom
7079	// Log Routing (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html)
7080	// in the Amazon Elastic Container Service Developer Guide.
7081	FirelensConfiguration *FirelensConfiguration `locationName:"firelensConfiguration" type:"structure"`
7082
7083	// The health check command and associated configuration parameters for the
7084	// container. This parameter maps to HealthCheck in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7085	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7086	// and the HEALTHCHECK parameter of docker run (https://docs.docker.com/engine/reference/run/).
7087	HealthCheck *HealthCheck `locationName:"healthCheck" type:"structure"`
7088
7089	// The hostname to use for your container. This parameter maps to Hostname in
7090	// the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7091	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7092	// and the --hostname option to docker run (https://docs.docker.com/engine/reference/run/).
7093	//
7094	// The hostname parameter is not supported if you are using the awsvpc network
7095	// mode.
7096	Hostname *string `locationName:"hostname" type:"string"`
7097
7098	// The image used to start a container. This string is passed directly to the
7099	// Docker daemon. Images in the Docker Hub registry are available by default.
7100	// Other repositories are specified with either repository-url/image:tag or
7101	// repository-url/image@digest . Up to 255 letters (uppercase and lowercase),
7102	// numbers, hyphens, underscores, colons, periods, forward slashes, and number
7103	// signs are allowed. This parameter maps to Image in the Create a container
7104	// (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section
7105	// of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and
7106	// the IMAGE parameter of docker run (https://docs.docker.com/engine/reference/run/).
7107	//
7108	//    * When a new task starts, the Amazon ECS container agent pulls the latest
7109	//    version of the specified image and tag for the container to use. However,
7110	//    subsequent updates to a repository image are not propagated to already
7111	//    running tasks.
7112	//
7113	//    * Images in Amazon ECR repositories can be specified by either using the
7114	//    full registry/repository:tag or registry/repository@digest. For example,
7115	//    012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>:latest
7116	//    or 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE.
7117	//
7118	//    * Images in official repositories on Docker Hub use a single name (for
7119	//    example, ubuntu or mongo).
7120	//
7121	//    * Images in other repositories on Docker Hub are qualified with an organization
7122	//    name (for example, amazon/amazon-ecs-agent).
7123	//
7124	//    * Images in other online repositories are qualified further by a domain
7125	//    name (for example, quay.io/assemblyline/ubuntu).
7126	Image *string `locationName:"image" type:"string"`
7127
7128	// When this parameter is true, this allows you to deploy containerized applications
7129	// that require stdin or a tty to be allocated. This parameter maps to OpenStdin
7130	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7131	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7132	// and the --interactive option to docker run (https://docs.docker.com/engine/reference/run/).
7133	Interactive *bool `locationName:"interactive" type:"boolean"`
7134
7135	// The links parameter allows containers to communicate with each other without
7136	// the need for port mappings. This parameter is only supported if the network
7137	// mode of a task definition is bridge. The name:internalName construct is analogous
7138	// to name:alias in Docker links. Up to 255 letters (uppercase and lowercase),
7139	// numbers, and hyphens are allowed. For more information about linking Docker
7140	// containers, go to Legacy container links (https://docs.docker.com/network/links/)
7141	// in the Docker documentation. This parameter maps to Links in the Create a
7142	// container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7143	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7144	// and the --link option to docker run (https://docs.docker.com/engine/reference/run/).
7145	//
7146	// This parameter is not supported for Windows containers.
7147	//
7148	// Containers that are collocated on a single container instance may be able
7149	// to communicate with each other without requiring links or host port mappings.
7150	// Network isolation is achieved on the container instance using security groups
7151	// and VPC settings.
7152	Links []*string `locationName:"links" type:"list"`
7153
7154	// Linux-specific modifications that are applied to the container, such as Linux
7155	// kernel capabilities. For more information see KernelCapabilities.
7156	//
7157	// This parameter is not supported for Windows containers.
7158	LinuxParameters *LinuxParameters `locationName:"linuxParameters" type:"structure"`
7159
7160	// The log configuration specification for the container.
7161	//
7162	// This parameter maps to LogConfig in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7163	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7164	// and the --log-driver option to docker run (https://docs.docker.com/engine/reference/run/).
7165	// By default, containers use the same logging driver that the Docker daemon
7166	// uses. However the container may use a different logging driver than the Docker
7167	// daemon by specifying a log driver with this parameter in the container definition.
7168	// To use a different logging driver for a container, the log system must be
7169	// configured properly on the container instance (or on a different log server
7170	// for remote logging options). For more information on the options for different
7171	// supported log drivers, see Configure logging drivers (https://docs.docker.com/engine/admin/logging/overview/)
7172	// in the Docker documentation.
7173	//
7174	// Amazon ECS currently supports a subset of the logging drivers available to
7175	// the Docker daemon (shown in the LogConfiguration data type). Additional log
7176	// drivers may be available in future releases of the Amazon ECS container agent.
7177	//
7178	// This parameter requires version 1.18 of the Docker Remote API or greater
7179	// on your container instance. To check the Docker Remote API version on your
7180	// container instance, log in to your container instance and run the following
7181	// command: sudo docker version --format '{{.Server.APIVersion}}'
7182	//
7183	// The Amazon ECS container agent running on a container instance must register
7184	// the logging drivers available on that instance with the ECS_AVAILABLE_LOGGING_DRIVERS
7185	// environment variable before containers placed on that instance can use these
7186	// log configuration options. For more information, see Amazon ECS Container
7187	// Agent Configuration (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html)
7188	// in the Amazon Elastic Container Service Developer Guide.
7189	LogConfiguration *LogConfiguration `locationName:"logConfiguration" type:"structure"`
7190
7191	// The amount (in MiB) of memory to present to the container. If your container
7192	// attempts to exceed the memory specified here, the container is killed. The
7193	// total amount of memory reserved for all containers within a task must be
7194	// lower than the task memory value, if one is specified. This parameter maps
7195	// to Memory in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7196	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7197	// and the --memory option to docker run (https://docs.docker.com/engine/reference/run/).
7198	//
7199	// If using the Fargate launch type, this parameter is optional.
7200	//
7201	// If using the EC2 launch type, you must specify either a task-level memory
7202	// value or a container-level memory value. If you specify both a container-level
7203	// memory and memoryReservation value, memory must be greater than memoryReservation.
7204	// If you specify memoryReservation, then that value is subtracted from the
7205	// available memory resources for the container instance on which the container
7206	// is placed. Otherwise, the value of memory is used.
7207	//
7208	// The Docker daemon reserves a minimum of 4 MiB of memory for a container,
7209	// so you should not specify fewer than 4 MiB of memory for your containers.
7210	Memory *int64 `locationName:"memory" type:"integer"`
7211
7212	// The soft limit (in MiB) of memory to reserve for the container. When system
7213	// memory is under heavy contention, Docker attempts to keep the container memory
7214	// to this soft limit. However, your container can consume more memory when
7215	// it needs to, up to either the hard limit specified with the memory parameter
7216	// (if applicable), or all of the available memory on the container instance,
7217	// whichever comes first. This parameter maps to MemoryReservation in the Create
7218	// a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7219	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7220	// and the --memory-reservation option to docker run (https://docs.docker.com/engine/reference/run/).
7221	//
7222	// If a task-level memory value is not specified, you must specify a non-zero
7223	// integer for one or both of memory or memoryReservation in a container definition.
7224	// If you specify both, memory must be greater than memoryReservation. If you
7225	// specify memoryReservation, then that value is subtracted from the available
7226	// memory resources for the container instance on which the container is placed.
7227	// Otherwise, the value of memory is used.
7228	//
7229	// For example, if your container normally uses 128 MiB of memory, but occasionally
7230	// bursts to 256 MiB of memory for short periods of time, you can set a memoryReservation
7231	// of 128 MiB, and a memory hard limit of 300 MiB. This configuration would
7232	// allow the container to only reserve 128 MiB of memory from the remaining
7233	// resources on the container instance, but also allow the container to consume
7234	// more memory resources when needed.
7235	//
7236	// The Docker daemon reserves a minimum of 4 MiB of memory for a container,
7237	// so you should not specify fewer than 4 MiB of memory for your containers.
7238	MemoryReservation *int64 `locationName:"memoryReservation" type:"integer"`
7239
7240	// The mount points for data volumes in your container.
7241	//
7242	// This parameter maps to Volumes in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7243	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7244	// and the --volume option to docker run (https://docs.docker.com/engine/reference/run/).
7245	//
7246	// Windows containers can mount whole directories on the same drive as $env:ProgramData.
7247	// Windows containers cannot mount directories on a different drive, and mount
7248	// point cannot be across drives.
7249	MountPoints []*MountPoint `locationName:"mountPoints" type:"list"`
7250
7251	// The name of a container. If you are linking multiple containers together
7252	// in a task definition, the name of one container can be entered in the links
7253	// of another container to connect the containers. Up to 255 letters (uppercase
7254	// and lowercase), numbers, and hyphens are allowed. This parameter maps to
7255	// name in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7256	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7257	// and the --name option to docker run (https://docs.docker.com/engine/reference/run/).
7258	Name *string `locationName:"name" type:"string"`
7259
7260	// The list of port mappings for the container. Port mappings allow containers
7261	// to access ports on the host container instance to send or receive traffic.
7262	//
7263	// For task definitions that use the awsvpc network mode, you should only specify
7264	// the containerPort. The hostPort can be left blank or it must be the same
7265	// value as the containerPort.
7266	//
7267	// Port mappings on Windows use the NetNAT gateway address rather than localhost.
7268	// There is no loopback for port mappings on Windows, so you cannot access a
7269	// container's mapped port from the host itself.
7270	//
7271	// This parameter maps to PortBindings in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7272	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7273	// and the --publish option to docker run (https://docs.docker.com/engine/reference/run/).
7274	// If the network mode of a task definition is set to none, then you can't specify
7275	// port mappings. If the network mode of a task definition is set to host, then
7276	// host ports must either be undefined or they must match the container port
7277	// in the port mapping.
7278	//
7279	// After a task reaches the RUNNING status, manual and automatic host and container
7280	// port assignments are visible in the Network Bindings section of a container
7281	// description for a selected task in the Amazon ECS console. The assignments
7282	// are also visible in the networkBindings section DescribeTasks responses.
7283	PortMappings []*PortMapping `locationName:"portMappings" type:"list"`
7284
7285	// When this parameter is true, the container is given elevated privileges on
7286	// the host container instance (similar to the root user). This parameter maps
7287	// to Privileged in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7288	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7289	// and the --privileged option to docker run (https://docs.docker.com/engine/reference/run/).
7290	//
7291	// This parameter is not supported for Windows containers or tasks using the
7292	// Fargate launch type.
7293	Privileged *bool `locationName:"privileged" type:"boolean"`
7294
7295	// When this parameter is true, a TTY is allocated. This parameter maps to Tty
7296	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7297	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7298	// and the --tty option to docker run (https://docs.docker.com/engine/reference/run/).
7299	PseudoTerminal *bool `locationName:"pseudoTerminal" type:"boolean"`
7300
7301	// When this parameter is true, the container is given read-only access to its
7302	// root file system. This parameter maps to ReadonlyRootfs in the Create a container
7303	// (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate) section
7304	// of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/) and
7305	// the --read-only option to docker run (https://docs.docker.com/engine/reference/run/).
7306	//
7307	// This parameter is not supported for Windows containers.
7308	ReadonlyRootFilesystem *bool `locationName:"readonlyRootFilesystem" type:"boolean"`
7309
7310	// The private repository authentication credentials to use.
7311	RepositoryCredentials *RepositoryCredentials `locationName:"repositoryCredentials" type:"structure"`
7312
7313	// The type and amount of a resource to assign to a container. The only supported
7314	// resource is a GPU.
7315	ResourceRequirements []*ResourceRequirement `locationName:"resourceRequirements" type:"list"`
7316
7317	// The secrets to pass to the container. For more information, see Specifying
7318	// Sensitive Data (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html)
7319	// in the Amazon Elastic Container Service Developer Guide.
7320	Secrets []*Secret `locationName:"secrets" type:"list"`
7321
7322	// Time duration (in seconds) to wait before giving up on resolving dependencies
7323	// for a container. For example, you specify two containers in a task definition
7324	// with containerA having a dependency on containerB reaching a COMPLETE, SUCCESS,
7325	// or HEALTHY status. If a startTimeout value is specified for containerB and
7326	// it does not reach the desired status within that time then containerA will
7327	// give up and not start. This results in the task transitioning to a STOPPED
7328	// state.
7329	//
7330	// For tasks using the EC2 launch type, the container instances require at least
7331	// version 1.26.0 of the container agent to enable a container start timeout
7332	// value. However, we recommend using the latest container agent version. For
7333	// information about checking your agent version and updating to the latest
7334	// version, see Updating the Amazon ECS Container Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)
7335	// in the Amazon Elastic Container Service Developer Guide. If you are using
7336	// an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1
7337	// of the ecs-init package. If your container instances are launched from version
7338	// 20190301 or later, then they contain the required versions of the container
7339	// agent and ecs-init. For more information, see Amazon ECS-optimized Linux
7340	// AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
7341	// in the Amazon Elastic Container Service Developer Guide.
7342	//
7343	// For tasks using the Fargate launch type, the task or service requires platform
7344	// version 1.3.0 or later.
7345	StartTimeout *int64 `locationName:"startTimeout" type:"integer"`
7346
7347	// Time duration (in seconds) to wait before the container is forcefully killed
7348	// if it doesn't exit normally on its own.
7349	//
7350	// For tasks using the Fargate launch type, the max stopTimeout value is 2 minutes
7351	// and the task or service requires platform version 1.3.0 or later.
7352	//
7353	// For tasks using the EC2 launch type, the stop timeout value for the container
7354	// takes precedence over the ECS_CONTAINER_STOP_TIMEOUT container agent configuration
7355	// parameter, if used. Container instances require at least version 1.26.0 of
7356	// the container agent to enable a container stop timeout value. However, we
7357	// recommend using the latest container agent version. For information about
7358	// checking your agent version and updating to the latest version, see Updating
7359	// the Amazon ECS Container Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)
7360	// in the Amazon Elastic Container Service Developer Guide. If you are using
7361	// an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1
7362	// of the ecs-init package. If your container instances are launched from version
7363	// 20190301 or later, then they contain the required versions of the container
7364	// agent and ecs-init. For more information, see Amazon ECS-optimized Linux
7365	// AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
7366	// in the Amazon Elastic Container Service Developer Guide.
7367	StopTimeout *int64 `locationName:"stopTimeout" type:"integer"`
7368
7369	// A list of namespaced kernel parameters to set in the container. This parameter
7370	// maps to Sysctls in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7371	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7372	// and the --sysctl option to docker run (https://docs.docker.com/engine/reference/run/).
7373	//
7374	// It is not recommended that you specify network-related systemControls parameters
7375	// for multiple containers in a single task that also uses either the awsvpc
7376	// or host network modes. For tasks that use the awsvpc network mode, the container
7377	// that is started last determines which systemControls parameters take effect.
7378	// For tasks that use the host network mode, it changes the container instance's
7379	// namespaced kernel parameters as well as the containers.
7380	SystemControls []*SystemControl `locationName:"systemControls" type:"list"`
7381
7382	// A list of ulimits to set in the container. This parameter maps to Ulimits
7383	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7384	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7385	// and the --ulimit option to docker run (https://docs.docker.com/engine/reference/run/).
7386	// Valid naming values are displayed in the Ulimit data type. This parameter
7387	// requires version 1.18 of the Docker Remote API or greater on your container
7388	// instance. To check the Docker Remote API version on your container instance,
7389	// log in to your container instance and run the following command: sudo docker
7390	// version --format '{{.Server.APIVersion}}'
7391	//
7392	// This parameter is not supported for Windows containers.
7393	Ulimits []*Ulimit `locationName:"ulimits" type:"list"`
7394
7395	// The user name to use inside the container. This parameter maps to User in
7396	// the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7397	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7398	// and the --user option to docker run (https://docs.docker.com/engine/reference/run/).
7399	//
7400	// You can use the following formats. If specifying a UID or GID, you must specify
7401	// it as a positive integer.
7402	//
7403	//    * user
7404	//
7405	//    * user:group
7406	//
7407	//    * uid
7408	//
7409	//    * uid:gid
7410	//
7411	//    * user:gid
7412	//
7413	//    * uid:group
7414	//
7415	// This parameter is not supported for Windows containers.
7416	User *string `locationName:"user" type:"string"`
7417
7418	// Data volumes to mount from another container. This parameter maps to VolumesFrom
7419	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7420	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7421	// and the --volumes-from option to docker run (https://docs.docker.com/engine/reference/run/).
7422	VolumesFrom []*VolumeFrom `locationName:"volumesFrom" type:"list"`
7423
7424	// The working directory in which to run commands inside the container. This
7425	// parameter maps to WorkingDir in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
7426	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
7427	// and the --workdir option to docker run (https://docs.docker.com/engine/reference/run/).
7428	WorkingDirectory *string `locationName:"workingDirectory" type:"string"`
7429}
7430
7431// String returns the string representation
7432func (s ContainerDefinition) String() string {
7433	return awsutil.Prettify(s)
7434}
7435
7436// GoString returns the string representation
7437func (s ContainerDefinition) GoString() string {
7438	return s.String()
7439}
7440
7441// Validate inspects the fields of the type to determine if they are valid.
7442func (s *ContainerDefinition) Validate() error {
7443	invalidParams := request.ErrInvalidParams{Context: "ContainerDefinition"}
7444	if s.DependsOn != nil {
7445		for i, v := range s.DependsOn {
7446			if v == nil {
7447				continue
7448			}
7449			if err := v.Validate(); err != nil {
7450				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DependsOn", i), err.(request.ErrInvalidParams))
7451			}
7452		}
7453	}
7454	if s.ExtraHosts != nil {
7455		for i, v := range s.ExtraHosts {
7456			if v == nil {
7457				continue
7458			}
7459			if err := v.Validate(); err != nil {
7460				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ExtraHosts", i), err.(request.ErrInvalidParams))
7461			}
7462		}
7463	}
7464	if s.FirelensConfiguration != nil {
7465		if err := s.FirelensConfiguration.Validate(); err != nil {
7466			invalidParams.AddNested("FirelensConfiguration", err.(request.ErrInvalidParams))
7467		}
7468	}
7469	if s.HealthCheck != nil {
7470		if err := s.HealthCheck.Validate(); err != nil {
7471			invalidParams.AddNested("HealthCheck", err.(request.ErrInvalidParams))
7472		}
7473	}
7474	if s.LinuxParameters != nil {
7475		if err := s.LinuxParameters.Validate(); err != nil {
7476			invalidParams.AddNested("LinuxParameters", err.(request.ErrInvalidParams))
7477		}
7478	}
7479	if s.LogConfiguration != nil {
7480		if err := s.LogConfiguration.Validate(); err != nil {
7481			invalidParams.AddNested("LogConfiguration", err.(request.ErrInvalidParams))
7482		}
7483	}
7484	if s.RepositoryCredentials != nil {
7485		if err := s.RepositoryCredentials.Validate(); err != nil {
7486			invalidParams.AddNested("RepositoryCredentials", err.(request.ErrInvalidParams))
7487		}
7488	}
7489	if s.ResourceRequirements != nil {
7490		for i, v := range s.ResourceRequirements {
7491			if v == nil {
7492				continue
7493			}
7494			if err := v.Validate(); err != nil {
7495				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceRequirements", i), err.(request.ErrInvalidParams))
7496			}
7497		}
7498	}
7499	if s.Secrets != nil {
7500		for i, v := range s.Secrets {
7501			if v == nil {
7502				continue
7503			}
7504			if err := v.Validate(); err != nil {
7505				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Secrets", i), err.(request.ErrInvalidParams))
7506			}
7507		}
7508	}
7509	if s.Ulimits != nil {
7510		for i, v := range s.Ulimits {
7511			if v == nil {
7512				continue
7513			}
7514			if err := v.Validate(); err != nil {
7515				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Ulimits", i), err.(request.ErrInvalidParams))
7516			}
7517		}
7518	}
7519
7520	if invalidParams.Len() > 0 {
7521		return invalidParams
7522	}
7523	return nil
7524}
7525
7526// SetCommand sets the Command field's value.
7527func (s *ContainerDefinition) SetCommand(v []*string) *ContainerDefinition {
7528	s.Command = v
7529	return s
7530}
7531
7532// SetCpu sets the Cpu field's value.
7533func (s *ContainerDefinition) SetCpu(v int64) *ContainerDefinition {
7534	s.Cpu = &v
7535	return s
7536}
7537
7538// SetDependsOn sets the DependsOn field's value.
7539func (s *ContainerDefinition) SetDependsOn(v []*ContainerDependency) *ContainerDefinition {
7540	s.DependsOn = v
7541	return s
7542}
7543
7544// SetDisableNetworking sets the DisableNetworking field's value.
7545func (s *ContainerDefinition) SetDisableNetworking(v bool) *ContainerDefinition {
7546	s.DisableNetworking = &v
7547	return s
7548}
7549
7550// SetDnsSearchDomains sets the DnsSearchDomains field's value.
7551func (s *ContainerDefinition) SetDnsSearchDomains(v []*string) *ContainerDefinition {
7552	s.DnsSearchDomains = v
7553	return s
7554}
7555
7556// SetDnsServers sets the DnsServers field's value.
7557func (s *ContainerDefinition) SetDnsServers(v []*string) *ContainerDefinition {
7558	s.DnsServers = v
7559	return s
7560}
7561
7562// SetDockerLabels sets the DockerLabels field's value.
7563func (s *ContainerDefinition) SetDockerLabels(v map[string]*string) *ContainerDefinition {
7564	s.DockerLabels = v
7565	return s
7566}
7567
7568// SetDockerSecurityOptions sets the DockerSecurityOptions field's value.
7569func (s *ContainerDefinition) SetDockerSecurityOptions(v []*string) *ContainerDefinition {
7570	s.DockerSecurityOptions = v
7571	return s
7572}
7573
7574// SetEntryPoint sets the EntryPoint field's value.
7575func (s *ContainerDefinition) SetEntryPoint(v []*string) *ContainerDefinition {
7576	s.EntryPoint = v
7577	return s
7578}
7579
7580// SetEnvironment sets the Environment field's value.
7581func (s *ContainerDefinition) SetEnvironment(v []*KeyValuePair) *ContainerDefinition {
7582	s.Environment = v
7583	return s
7584}
7585
7586// SetEssential sets the Essential field's value.
7587func (s *ContainerDefinition) SetEssential(v bool) *ContainerDefinition {
7588	s.Essential = &v
7589	return s
7590}
7591
7592// SetExtraHosts sets the ExtraHosts field's value.
7593func (s *ContainerDefinition) SetExtraHosts(v []*HostEntry) *ContainerDefinition {
7594	s.ExtraHosts = v
7595	return s
7596}
7597
7598// SetFirelensConfiguration sets the FirelensConfiguration field's value.
7599func (s *ContainerDefinition) SetFirelensConfiguration(v *FirelensConfiguration) *ContainerDefinition {
7600	s.FirelensConfiguration = v
7601	return s
7602}
7603
7604// SetHealthCheck sets the HealthCheck field's value.
7605func (s *ContainerDefinition) SetHealthCheck(v *HealthCheck) *ContainerDefinition {
7606	s.HealthCheck = v
7607	return s
7608}
7609
7610// SetHostname sets the Hostname field's value.
7611func (s *ContainerDefinition) SetHostname(v string) *ContainerDefinition {
7612	s.Hostname = &v
7613	return s
7614}
7615
7616// SetImage sets the Image field's value.
7617func (s *ContainerDefinition) SetImage(v string) *ContainerDefinition {
7618	s.Image = &v
7619	return s
7620}
7621
7622// SetInteractive sets the Interactive field's value.
7623func (s *ContainerDefinition) SetInteractive(v bool) *ContainerDefinition {
7624	s.Interactive = &v
7625	return s
7626}
7627
7628// SetLinks sets the Links field's value.
7629func (s *ContainerDefinition) SetLinks(v []*string) *ContainerDefinition {
7630	s.Links = v
7631	return s
7632}
7633
7634// SetLinuxParameters sets the LinuxParameters field's value.
7635func (s *ContainerDefinition) SetLinuxParameters(v *LinuxParameters) *ContainerDefinition {
7636	s.LinuxParameters = v
7637	return s
7638}
7639
7640// SetLogConfiguration sets the LogConfiguration field's value.
7641func (s *ContainerDefinition) SetLogConfiguration(v *LogConfiguration) *ContainerDefinition {
7642	s.LogConfiguration = v
7643	return s
7644}
7645
7646// SetMemory sets the Memory field's value.
7647func (s *ContainerDefinition) SetMemory(v int64) *ContainerDefinition {
7648	s.Memory = &v
7649	return s
7650}
7651
7652// SetMemoryReservation sets the MemoryReservation field's value.
7653func (s *ContainerDefinition) SetMemoryReservation(v int64) *ContainerDefinition {
7654	s.MemoryReservation = &v
7655	return s
7656}
7657
7658// SetMountPoints sets the MountPoints field's value.
7659func (s *ContainerDefinition) SetMountPoints(v []*MountPoint) *ContainerDefinition {
7660	s.MountPoints = v
7661	return s
7662}
7663
7664// SetName sets the Name field's value.
7665func (s *ContainerDefinition) SetName(v string) *ContainerDefinition {
7666	s.Name = &v
7667	return s
7668}
7669
7670// SetPortMappings sets the PortMappings field's value.
7671func (s *ContainerDefinition) SetPortMappings(v []*PortMapping) *ContainerDefinition {
7672	s.PortMappings = v
7673	return s
7674}
7675
7676// SetPrivileged sets the Privileged field's value.
7677func (s *ContainerDefinition) SetPrivileged(v bool) *ContainerDefinition {
7678	s.Privileged = &v
7679	return s
7680}
7681
7682// SetPseudoTerminal sets the PseudoTerminal field's value.
7683func (s *ContainerDefinition) SetPseudoTerminal(v bool) *ContainerDefinition {
7684	s.PseudoTerminal = &v
7685	return s
7686}
7687
7688// SetReadonlyRootFilesystem sets the ReadonlyRootFilesystem field's value.
7689func (s *ContainerDefinition) SetReadonlyRootFilesystem(v bool) *ContainerDefinition {
7690	s.ReadonlyRootFilesystem = &v
7691	return s
7692}
7693
7694// SetRepositoryCredentials sets the RepositoryCredentials field's value.
7695func (s *ContainerDefinition) SetRepositoryCredentials(v *RepositoryCredentials) *ContainerDefinition {
7696	s.RepositoryCredentials = v
7697	return s
7698}
7699
7700// SetResourceRequirements sets the ResourceRequirements field's value.
7701func (s *ContainerDefinition) SetResourceRequirements(v []*ResourceRequirement) *ContainerDefinition {
7702	s.ResourceRequirements = v
7703	return s
7704}
7705
7706// SetSecrets sets the Secrets field's value.
7707func (s *ContainerDefinition) SetSecrets(v []*Secret) *ContainerDefinition {
7708	s.Secrets = v
7709	return s
7710}
7711
7712// SetStartTimeout sets the StartTimeout field's value.
7713func (s *ContainerDefinition) SetStartTimeout(v int64) *ContainerDefinition {
7714	s.StartTimeout = &v
7715	return s
7716}
7717
7718// SetStopTimeout sets the StopTimeout field's value.
7719func (s *ContainerDefinition) SetStopTimeout(v int64) *ContainerDefinition {
7720	s.StopTimeout = &v
7721	return s
7722}
7723
7724// SetSystemControls sets the SystemControls field's value.
7725func (s *ContainerDefinition) SetSystemControls(v []*SystemControl) *ContainerDefinition {
7726	s.SystemControls = v
7727	return s
7728}
7729
7730// SetUlimits sets the Ulimits field's value.
7731func (s *ContainerDefinition) SetUlimits(v []*Ulimit) *ContainerDefinition {
7732	s.Ulimits = v
7733	return s
7734}
7735
7736// SetUser sets the User field's value.
7737func (s *ContainerDefinition) SetUser(v string) *ContainerDefinition {
7738	s.User = &v
7739	return s
7740}
7741
7742// SetVolumesFrom sets the VolumesFrom field's value.
7743func (s *ContainerDefinition) SetVolumesFrom(v []*VolumeFrom) *ContainerDefinition {
7744	s.VolumesFrom = v
7745	return s
7746}
7747
7748// SetWorkingDirectory sets the WorkingDirectory field's value.
7749func (s *ContainerDefinition) SetWorkingDirectory(v string) *ContainerDefinition {
7750	s.WorkingDirectory = &v
7751	return s
7752}
7753
7754// The dependencies defined for container startup and shutdown. A container
7755// can contain multiple dependencies. When a dependency is defined for container
7756// startup, for container shutdown it is reversed.
7757//
7758// Your Amazon ECS container instances require at least version 1.26.0 of the
7759// container agent to enable container dependencies. However, we recommend using
7760// the latest container agent version. For information about checking your agent
7761// version and updating to the latest version, see Updating the Amazon ECS Container
7762// Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)
7763// in the Amazon Elastic Container Service Developer Guide. If you are using
7764// an Amazon ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1
7765// of the ecs-init package. If your container instances are launched from version
7766// 20190301 or later, then they contain the required versions of the container
7767// agent and ecs-init. For more information, see Amazon ECS-optimized Linux
7768// AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
7769// in the Amazon Elastic Container Service Developer Guide.
7770//
7771// For tasks using the Fargate launch type, this parameter requires that the
7772// task or service uses platform version 1.3.0 or later.
7773type ContainerDependency struct {
7774	_ struct{} `type:"structure"`
7775
7776	// The dependency condition of the container. The following are the available
7777	// conditions and their behavior:
7778	//
7779	//    * START - This condition emulates the behavior of links and volumes today.
7780	//    It validates that a dependent container is started before permitting other
7781	//    containers to start.
7782	//
7783	//    * COMPLETE - This condition validates that a dependent container runs
7784	//    to completion (exits) before permitting other containers to start. This
7785	//    can be useful for nonessential containers that run a script and then exit.
7786	//
7787	//    * SUCCESS - This condition is the same as COMPLETE, but it also requires
7788	//    that the container exits with a zero status.
7789	//
7790	//    * HEALTHY - This condition validates that the dependent container passes
7791	//    its Docker health check before permitting other containers to start. This
7792	//    requires that the dependent container has health checks configured. This
7793	//    condition is confirmed only at task startup.
7794	//
7795	// Condition is a required field
7796	Condition *string `locationName:"condition" type:"string" required:"true" enum:"ContainerCondition"`
7797
7798	// The name of a container.
7799	//
7800	// ContainerName is a required field
7801	ContainerName *string `locationName:"containerName" type:"string" required:"true"`
7802}
7803
7804// String returns the string representation
7805func (s ContainerDependency) String() string {
7806	return awsutil.Prettify(s)
7807}
7808
7809// GoString returns the string representation
7810func (s ContainerDependency) GoString() string {
7811	return s.String()
7812}
7813
7814// Validate inspects the fields of the type to determine if they are valid.
7815func (s *ContainerDependency) Validate() error {
7816	invalidParams := request.ErrInvalidParams{Context: "ContainerDependency"}
7817	if s.Condition == nil {
7818		invalidParams.Add(request.NewErrParamRequired("Condition"))
7819	}
7820	if s.ContainerName == nil {
7821		invalidParams.Add(request.NewErrParamRequired("ContainerName"))
7822	}
7823
7824	if invalidParams.Len() > 0 {
7825		return invalidParams
7826	}
7827	return nil
7828}
7829
7830// SetCondition sets the Condition field's value.
7831func (s *ContainerDependency) SetCondition(v string) *ContainerDependency {
7832	s.Condition = &v
7833	return s
7834}
7835
7836// SetContainerName sets the ContainerName field's value.
7837func (s *ContainerDependency) SetContainerName(v string) *ContainerDependency {
7838	s.ContainerName = &v
7839	return s
7840}
7841
7842// An EC2 instance that is running the Amazon ECS agent and has been registered
7843// with a cluster.
7844type ContainerInstance struct {
7845	_ struct{} `type:"structure"`
7846
7847	// This parameter returns true if the agent is connected to Amazon ECS. Registered
7848	// instances with an agent that may be unhealthy or stopped return false. Only
7849	// instances connected to an agent can accept placement requests.
7850	AgentConnected *bool `locationName:"agentConnected" type:"boolean"`
7851
7852	// The status of the most recent agent update. If an update has never been requested,
7853	// this value is NULL.
7854	AgentUpdateStatus *string `locationName:"agentUpdateStatus" type:"string" enum:"AgentUpdateStatus"`
7855
7856	// The resources attached to a container instance, such as elastic network interfaces.
7857	Attachments []*Attachment `locationName:"attachments" type:"list"`
7858
7859	// The attributes set for the container instance, either by the Amazon ECS container
7860	// agent at instance registration or manually with the PutAttributes operation.
7861	Attributes []*Attribute `locationName:"attributes" type:"list"`
7862
7863	// The capacity provider associated with the container instance.
7864	CapacityProviderName *string `locationName:"capacityProviderName" type:"string"`
7865
7866	// The Amazon Resource Name (ARN) of the container instance. The ARN contains
7867	// the arn:aws:ecs namespace, followed by the Region of the container instance,
7868	// the AWS account ID of the container instance owner, the container-instance
7869	// namespace, and then the container instance ID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID.
7870	ContainerInstanceArn *string `locationName:"containerInstanceArn" type:"string"`
7871
7872	// The EC2 instance ID of the container instance.
7873	Ec2InstanceId *string `locationName:"ec2InstanceId" type:"string"`
7874
7875	// The number of tasks on the container instance that are in the PENDING status.
7876	PendingTasksCount *int64 `locationName:"pendingTasksCount" type:"integer"`
7877
7878	// The Unix timestamp for when the container instance was registered.
7879	RegisteredAt *time.Time `locationName:"registeredAt" type:"timestamp"`
7880
7881	// For CPU and memory resource types, this parameter describes the amount of
7882	// each resource that was available on the container instance when the container
7883	// agent registered it with Amazon ECS. This value represents the total amount
7884	// of CPU and memory that can be allocated on this container instance to tasks.
7885	// For port resource types, this parameter describes the ports that were reserved
7886	// by the Amazon ECS container agent when it registered the container instance
7887	// with Amazon ECS.
7888	RegisteredResources []*Resource `locationName:"registeredResources" type:"list"`
7889
7890	// For CPU and memory resource types, this parameter describes the remaining
7891	// CPU and memory that has not already been allocated to tasks and is therefore
7892	// available for new tasks. For port resource types, this parameter describes
7893	// the ports that were reserved by the Amazon ECS container agent (at instance
7894	// registration time) and any task containers that have reserved port mappings
7895	// on the host (with the host or bridge network mode). Any port that is not
7896	// specified here is available for new tasks.
7897	RemainingResources []*Resource `locationName:"remainingResources" type:"list"`
7898
7899	// The number of tasks on the container instance that are in the RUNNING status.
7900	RunningTasksCount *int64 `locationName:"runningTasksCount" type:"integer"`
7901
7902	// The status of the container instance. The valid values are REGISTERING, REGISTRATION_FAILED,
7903	// ACTIVE, INACTIVE, DEREGISTERING, or DRAINING.
7904	//
7905	// If your account has opted in to the awsvpcTrunking account setting, then
7906	// any newly registered container instance will transition to a REGISTERING
7907	// status while the trunk elastic network interface is provisioned for the instance.
7908	// If the registration fails, the instance will transition to a REGISTRATION_FAILED
7909	// status. You can describe the container instance and see the reason for failure
7910	// in the statusReason parameter. Once the container instance is terminated,
7911	// the instance transitions to a DEREGISTERING status while the trunk elastic
7912	// network interface is deprovisioned. The instance then transitions to an INACTIVE
7913	// status.
7914	//
7915	// The ACTIVE status indicates that the container instance can accept tasks.
7916	// The DRAINING indicates that new tasks are not placed on the container instance
7917	// and any service tasks running on the container instance are removed if possible.
7918	// For more information, see Container Instance Draining (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-draining.html)
7919	// in the Amazon Elastic Container Service Developer Guide.
7920	Status *string `locationName:"status" type:"string"`
7921
7922	// The reason that the container instance reached its current status.
7923	StatusReason *string `locationName:"statusReason" type:"string"`
7924
7925	// The metadata that you apply to the container instance to help you categorize
7926	// and organize them. Each tag consists of a key and an optional value, both
7927	// of which you define.
7928	//
7929	// The following basic restrictions apply to tags:
7930	//
7931	//    * Maximum number of tags per resource - 50
7932	//
7933	//    * For each resource, each tag key must be unique, and each tag key can
7934	//    have only one value.
7935	//
7936	//    * Maximum key length - 128 Unicode characters in UTF-8
7937	//
7938	//    * Maximum value length - 256 Unicode characters in UTF-8
7939	//
7940	//    * If your tagging schema is used across multiple services and resources,
7941	//    remember that other services may have restrictions on allowed characters.
7942	//    Generally allowed characters are: letters, numbers, and spaces representable
7943	//    in UTF-8, and the following characters: + - = . _ : / @.
7944	//
7945	//    * Tag keys and values are case-sensitive.
7946	//
7947	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
7948	//    as a prefix for either keys or values as it is reserved for AWS use. You
7949	//    cannot edit or delete tag keys or values with this prefix. Tags with this
7950	//    prefix do not count against your tags per resource limit.
7951	Tags []*Tag `locationName:"tags" type:"list"`
7952
7953	// The version counter for the container instance. Every time a container instance
7954	// experiences a change that triggers a CloudWatch event, the version counter
7955	// is incremented. If you are replicating your Amazon ECS container instance
7956	// state with CloudWatch Events, you can compare the version of a container
7957	// instance reported by the Amazon ECS APIs with the version reported in CloudWatch
7958	// Events for the container instance (inside the detail object) to verify that
7959	// the version in your event stream is current.
7960	Version *int64 `locationName:"version" type:"long"`
7961
7962	// The version information for the Amazon ECS container agent and Docker daemon
7963	// running on the container instance.
7964	VersionInfo *VersionInfo `locationName:"versionInfo" type:"structure"`
7965}
7966
7967// String returns the string representation
7968func (s ContainerInstance) String() string {
7969	return awsutil.Prettify(s)
7970}
7971
7972// GoString returns the string representation
7973func (s ContainerInstance) GoString() string {
7974	return s.String()
7975}
7976
7977// SetAgentConnected sets the AgentConnected field's value.
7978func (s *ContainerInstance) SetAgentConnected(v bool) *ContainerInstance {
7979	s.AgentConnected = &v
7980	return s
7981}
7982
7983// SetAgentUpdateStatus sets the AgentUpdateStatus field's value.
7984func (s *ContainerInstance) SetAgentUpdateStatus(v string) *ContainerInstance {
7985	s.AgentUpdateStatus = &v
7986	return s
7987}
7988
7989// SetAttachments sets the Attachments field's value.
7990func (s *ContainerInstance) SetAttachments(v []*Attachment) *ContainerInstance {
7991	s.Attachments = v
7992	return s
7993}
7994
7995// SetAttributes sets the Attributes field's value.
7996func (s *ContainerInstance) SetAttributes(v []*Attribute) *ContainerInstance {
7997	s.Attributes = v
7998	return s
7999}
8000
8001// SetCapacityProviderName sets the CapacityProviderName field's value.
8002func (s *ContainerInstance) SetCapacityProviderName(v string) *ContainerInstance {
8003	s.CapacityProviderName = &v
8004	return s
8005}
8006
8007// SetContainerInstanceArn sets the ContainerInstanceArn field's value.
8008func (s *ContainerInstance) SetContainerInstanceArn(v string) *ContainerInstance {
8009	s.ContainerInstanceArn = &v
8010	return s
8011}
8012
8013// SetEc2InstanceId sets the Ec2InstanceId field's value.
8014func (s *ContainerInstance) SetEc2InstanceId(v string) *ContainerInstance {
8015	s.Ec2InstanceId = &v
8016	return s
8017}
8018
8019// SetPendingTasksCount sets the PendingTasksCount field's value.
8020func (s *ContainerInstance) SetPendingTasksCount(v int64) *ContainerInstance {
8021	s.PendingTasksCount = &v
8022	return s
8023}
8024
8025// SetRegisteredAt sets the RegisteredAt field's value.
8026func (s *ContainerInstance) SetRegisteredAt(v time.Time) *ContainerInstance {
8027	s.RegisteredAt = &v
8028	return s
8029}
8030
8031// SetRegisteredResources sets the RegisteredResources field's value.
8032func (s *ContainerInstance) SetRegisteredResources(v []*Resource) *ContainerInstance {
8033	s.RegisteredResources = v
8034	return s
8035}
8036
8037// SetRemainingResources sets the RemainingResources field's value.
8038func (s *ContainerInstance) SetRemainingResources(v []*Resource) *ContainerInstance {
8039	s.RemainingResources = v
8040	return s
8041}
8042
8043// SetRunningTasksCount sets the RunningTasksCount field's value.
8044func (s *ContainerInstance) SetRunningTasksCount(v int64) *ContainerInstance {
8045	s.RunningTasksCount = &v
8046	return s
8047}
8048
8049// SetStatus sets the Status field's value.
8050func (s *ContainerInstance) SetStatus(v string) *ContainerInstance {
8051	s.Status = &v
8052	return s
8053}
8054
8055// SetStatusReason sets the StatusReason field's value.
8056func (s *ContainerInstance) SetStatusReason(v string) *ContainerInstance {
8057	s.StatusReason = &v
8058	return s
8059}
8060
8061// SetTags sets the Tags field's value.
8062func (s *ContainerInstance) SetTags(v []*Tag) *ContainerInstance {
8063	s.Tags = v
8064	return s
8065}
8066
8067// SetVersion sets the Version field's value.
8068func (s *ContainerInstance) SetVersion(v int64) *ContainerInstance {
8069	s.Version = &v
8070	return s
8071}
8072
8073// SetVersionInfo sets the VersionInfo field's value.
8074func (s *ContainerInstance) SetVersionInfo(v *VersionInfo) *ContainerInstance {
8075	s.VersionInfo = v
8076	return s
8077}
8078
8079// The overrides that should be sent to a container. An empty container override
8080// can be passed in. An example of an empty container override would be {"containerOverrides":
8081// [ ] }. If a non-empty container override is specified, the name parameter
8082// must be included.
8083type ContainerOverride struct {
8084	_ struct{} `type:"structure"`
8085
8086	// The command to send to the container that overrides the default command from
8087	// the Docker image or the task definition. You must also specify a container
8088	// name.
8089	Command []*string `locationName:"command" type:"list"`
8090
8091	// The number of cpu units reserved for the container, instead of the default
8092	// value from the task definition. You must also specify a container name.
8093	Cpu *int64 `locationName:"cpu" type:"integer"`
8094
8095	// The environment variables to send to the container. You can add new environment
8096	// variables, which are added to the container at launch, or you can override
8097	// the existing environment variables from the Docker image or the task definition.
8098	// You must also specify a container name.
8099	Environment []*KeyValuePair `locationName:"environment" type:"list"`
8100
8101	// The hard limit (in MiB) of memory to present to the container, instead of
8102	// the default value from the task definition. If your container attempts to
8103	// exceed the memory specified here, the container is killed. You must also
8104	// specify a container name.
8105	Memory *int64 `locationName:"memory" type:"integer"`
8106
8107	// The soft limit (in MiB) of memory to reserve for the container, instead of
8108	// the default value from the task definition. You must also specify a container
8109	// name.
8110	MemoryReservation *int64 `locationName:"memoryReservation" type:"integer"`
8111
8112	// The name of the container that receives the override. This parameter is required
8113	// if any override is specified.
8114	Name *string `locationName:"name" type:"string"`
8115
8116	// The type and amount of a resource to assign to a container, instead of the
8117	// default value from the task definition. The only supported resource is a
8118	// GPU.
8119	ResourceRequirements []*ResourceRequirement `locationName:"resourceRequirements" type:"list"`
8120}
8121
8122// String returns the string representation
8123func (s ContainerOverride) String() string {
8124	return awsutil.Prettify(s)
8125}
8126
8127// GoString returns the string representation
8128func (s ContainerOverride) GoString() string {
8129	return s.String()
8130}
8131
8132// Validate inspects the fields of the type to determine if they are valid.
8133func (s *ContainerOverride) Validate() error {
8134	invalidParams := request.ErrInvalidParams{Context: "ContainerOverride"}
8135	if s.ResourceRequirements != nil {
8136		for i, v := range s.ResourceRequirements {
8137			if v == nil {
8138				continue
8139			}
8140			if err := v.Validate(); err != nil {
8141				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ResourceRequirements", i), err.(request.ErrInvalidParams))
8142			}
8143		}
8144	}
8145
8146	if invalidParams.Len() > 0 {
8147		return invalidParams
8148	}
8149	return nil
8150}
8151
8152// SetCommand sets the Command field's value.
8153func (s *ContainerOverride) SetCommand(v []*string) *ContainerOverride {
8154	s.Command = v
8155	return s
8156}
8157
8158// SetCpu sets the Cpu field's value.
8159func (s *ContainerOverride) SetCpu(v int64) *ContainerOverride {
8160	s.Cpu = &v
8161	return s
8162}
8163
8164// SetEnvironment sets the Environment field's value.
8165func (s *ContainerOverride) SetEnvironment(v []*KeyValuePair) *ContainerOverride {
8166	s.Environment = v
8167	return s
8168}
8169
8170// SetMemory sets the Memory field's value.
8171func (s *ContainerOverride) SetMemory(v int64) *ContainerOverride {
8172	s.Memory = &v
8173	return s
8174}
8175
8176// SetMemoryReservation sets the MemoryReservation field's value.
8177func (s *ContainerOverride) SetMemoryReservation(v int64) *ContainerOverride {
8178	s.MemoryReservation = &v
8179	return s
8180}
8181
8182// SetName sets the Name field's value.
8183func (s *ContainerOverride) SetName(v string) *ContainerOverride {
8184	s.Name = &v
8185	return s
8186}
8187
8188// SetResourceRequirements sets the ResourceRequirements field's value.
8189func (s *ContainerOverride) SetResourceRequirements(v []*ResourceRequirement) *ContainerOverride {
8190	s.ResourceRequirements = v
8191	return s
8192}
8193
8194// An object representing a change in state for a container.
8195type ContainerStateChange struct {
8196	_ struct{} `type:"structure"`
8197
8198	// The name of the container.
8199	ContainerName *string `locationName:"containerName" type:"string"`
8200
8201	// The exit code for the container, if the state change is a result of the container
8202	// exiting.
8203	ExitCode *int64 `locationName:"exitCode" type:"integer"`
8204
8205	// The container image SHA 256 digest.
8206	ImageDigest *string `locationName:"imageDigest" type:"string"`
8207
8208	// Any network bindings associated with the container.
8209	NetworkBindings []*NetworkBinding `locationName:"networkBindings" type:"list"`
8210
8211	// The reason for the state change.
8212	Reason *string `locationName:"reason" type:"string"`
8213
8214	// The ID of the Docker container.
8215	RuntimeId *string `locationName:"runtimeId" type:"string"`
8216
8217	// The status of the container.
8218	Status *string `locationName:"status" type:"string"`
8219}
8220
8221// String returns the string representation
8222func (s ContainerStateChange) String() string {
8223	return awsutil.Prettify(s)
8224}
8225
8226// GoString returns the string representation
8227func (s ContainerStateChange) GoString() string {
8228	return s.String()
8229}
8230
8231// SetContainerName sets the ContainerName field's value.
8232func (s *ContainerStateChange) SetContainerName(v string) *ContainerStateChange {
8233	s.ContainerName = &v
8234	return s
8235}
8236
8237// SetExitCode sets the ExitCode field's value.
8238func (s *ContainerStateChange) SetExitCode(v int64) *ContainerStateChange {
8239	s.ExitCode = &v
8240	return s
8241}
8242
8243// SetImageDigest sets the ImageDigest field's value.
8244func (s *ContainerStateChange) SetImageDigest(v string) *ContainerStateChange {
8245	s.ImageDigest = &v
8246	return s
8247}
8248
8249// SetNetworkBindings sets the NetworkBindings field's value.
8250func (s *ContainerStateChange) SetNetworkBindings(v []*NetworkBinding) *ContainerStateChange {
8251	s.NetworkBindings = v
8252	return s
8253}
8254
8255// SetReason sets the Reason field's value.
8256func (s *ContainerStateChange) SetReason(v string) *ContainerStateChange {
8257	s.Reason = &v
8258	return s
8259}
8260
8261// SetRuntimeId sets the RuntimeId field's value.
8262func (s *ContainerStateChange) SetRuntimeId(v string) *ContainerStateChange {
8263	s.RuntimeId = &v
8264	return s
8265}
8266
8267// SetStatus sets the Status field's value.
8268func (s *ContainerStateChange) SetStatus(v string) *ContainerStateChange {
8269	s.Status = &v
8270	return s
8271}
8272
8273type CreateCapacityProviderInput struct {
8274	_ struct{} `type:"structure"`
8275
8276	// The details of the Auto Scaling group for the capacity provider.
8277	//
8278	// AutoScalingGroupProvider is a required field
8279	AutoScalingGroupProvider *AutoScalingGroupProvider `locationName:"autoScalingGroupProvider" type:"structure" required:"true"`
8280
8281	// The name of the capacity provider. Up to 255 characters are allowed, including
8282	// letters (upper and lowercase), numbers, underscores, and hyphens. The name
8283	// cannot be prefixed with "aws", "ecs", or "fargate".
8284	//
8285	// Name is a required field
8286	Name *string `locationName:"name" type:"string" required:"true"`
8287
8288	// The metadata that you apply to the capacity provider to help you categorize
8289	// and organize them. Each tag consists of a key and an optional value, both
8290	// of which you define.
8291	//
8292	// The following basic restrictions apply to tags:
8293	//
8294	//    * Maximum number of tags per resource - 50
8295	//
8296	//    * For each resource, each tag key must be unique, and each tag key can
8297	//    have only one value.
8298	//
8299	//    * Maximum key length - 128 Unicode characters in UTF-8
8300	//
8301	//    * Maximum value length - 256 Unicode characters in UTF-8
8302	//
8303	//    * If your tagging schema is used across multiple services and resources,
8304	//    remember that other services may have restrictions on allowed characters.
8305	//    Generally allowed characters are: letters, numbers, and spaces representable
8306	//    in UTF-8, and the following characters: + - = . _ : / @.
8307	//
8308	//    * Tag keys and values are case-sensitive.
8309	//
8310	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
8311	//    as a prefix for either keys or values as it is reserved for AWS use. You
8312	//    cannot edit or delete tag keys or values with this prefix. Tags with this
8313	//    prefix do not count against your tags per resource limit.
8314	Tags []*Tag `locationName:"tags" type:"list"`
8315}
8316
8317// String returns the string representation
8318func (s CreateCapacityProviderInput) String() string {
8319	return awsutil.Prettify(s)
8320}
8321
8322// GoString returns the string representation
8323func (s CreateCapacityProviderInput) GoString() string {
8324	return s.String()
8325}
8326
8327// Validate inspects the fields of the type to determine if they are valid.
8328func (s *CreateCapacityProviderInput) Validate() error {
8329	invalidParams := request.ErrInvalidParams{Context: "CreateCapacityProviderInput"}
8330	if s.AutoScalingGroupProvider == nil {
8331		invalidParams.Add(request.NewErrParamRequired("AutoScalingGroupProvider"))
8332	}
8333	if s.Name == nil {
8334		invalidParams.Add(request.NewErrParamRequired("Name"))
8335	}
8336	if s.AutoScalingGroupProvider != nil {
8337		if err := s.AutoScalingGroupProvider.Validate(); err != nil {
8338			invalidParams.AddNested("AutoScalingGroupProvider", err.(request.ErrInvalidParams))
8339		}
8340	}
8341	if s.Tags != nil {
8342		for i, v := range s.Tags {
8343			if v == nil {
8344				continue
8345			}
8346			if err := v.Validate(); err != nil {
8347				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
8348			}
8349		}
8350	}
8351
8352	if invalidParams.Len() > 0 {
8353		return invalidParams
8354	}
8355	return nil
8356}
8357
8358// SetAutoScalingGroupProvider sets the AutoScalingGroupProvider field's value.
8359func (s *CreateCapacityProviderInput) SetAutoScalingGroupProvider(v *AutoScalingGroupProvider) *CreateCapacityProviderInput {
8360	s.AutoScalingGroupProvider = v
8361	return s
8362}
8363
8364// SetName sets the Name field's value.
8365func (s *CreateCapacityProviderInput) SetName(v string) *CreateCapacityProviderInput {
8366	s.Name = &v
8367	return s
8368}
8369
8370// SetTags sets the Tags field's value.
8371func (s *CreateCapacityProviderInput) SetTags(v []*Tag) *CreateCapacityProviderInput {
8372	s.Tags = v
8373	return s
8374}
8375
8376type CreateCapacityProviderOutput struct {
8377	_ struct{} `type:"structure"`
8378
8379	// The full description of the new capacity provider.
8380	CapacityProvider *CapacityProvider `locationName:"capacityProvider" type:"structure"`
8381}
8382
8383// String returns the string representation
8384func (s CreateCapacityProviderOutput) String() string {
8385	return awsutil.Prettify(s)
8386}
8387
8388// GoString returns the string representation
8389func (s CreateCapacityProviderOutput) GoString() string {
8390	return s.String()
8391}
8392
8393// SetCapacityProvider sets the CapacityProvider field's value.
8394func (s *CreateCapacityProviderOutput) SetCapacityProvider(v *CapacityProvider) *CreateCapacityProviderOutput {
8395	s.CapacityProvider = v
8396	return s
8397}
8398
8399type CreateClusterInput struct {
8400	_ struct{} `type:"structure"`
8401
8402	// The short name or full Amazon Resource Name (ARN) of one or more capacity
8403	// providers to associate with the cluster.
8404	//
8405	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
8406	// provider must already be created and not already associated with another
8407	// cluster. New capacity providers can be created with the CreateCapacityProvider
8408	// API operation.
8409	//
8410	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
8411	// capacity providers. The AWS Fargate capacity providers are available to all
8412	// accounts and only need to be associated with a cluster to be used.
8413	//
8414	// The PutClusterCapacityProviders API operation is used to update the list
8415	// of available capacity providers for a cluster after the cluster is created.
8416	CapacityProviders []*string `locationName:"capacityProviders" type:"list"`
8417
8418	// The name of your cluster. If you do not specify a name for your cluster,
8419	// you create a cluster named default. Up to 255 letters (uppercase and lowercase),
8420	// numbers, and hyphens are allowed.
8421	ClusterName *string `locationName:"clusterName" type:"string"`
8422
8423	// The capacity provider strategy to use by default for the cluster.
8424	//
8425	// When creating a service or running a task on a cluster, if no capacity provider
8426	// or launch type is specified then the default capacity provider strategy for
8427	// the cluster is used.
8428	//
8429	// A capacity provider strategy consists of one or more capacity providers along
8430	// with the base and weight to assign to them. A capacity provider must be associated
8431	// with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders
8432	// API is used to associate a capacity provider with a cluster. Only capacity
8433	// providers with an ACTIVE or UPDATING status can be used.
8434	//
8435	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
8436	// provider must already be created. New capacity providers can be created with
8437	// the CreateCapacityProvider API operation.
8438	//
8439	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
8440	// capacity providers. The AWS Fargate capacity providers are available to all
8441	// accounts and only need to be associated with a cluster to be used.
8442	//
8443	// If a default capacity provider strategy is not defined for a cluster during
8444	// creation, it can be defined later with the PutClusterCapacityProviders API
8445	// operation.
8446	DefaultCapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"defaultCapacityProviderStrategy" type:"list"`
8447
8448	// The setting to use when creating a cluster. This parameter is used to enable
8449	// CloudWatch Container Insights for a cluster. If this value is specified,
8450	// it will override the containerInsights value set with PutAccountSetting or
8451	// PutAccountSettingDefault.
8452	Settings []*ClusterSetting `locationName:"settings" type:"list"`
8453
8454	// The metadata that you apply to the cluster to help you categorize and organize
8455	// them. Each tag consists of a key and an optional value, both of which you
8456	// define.
8457	//
8458	// The following basic restrictions apply to tags:
8459	//
8460	//    * Maximum number of tags per resource - 50
8461	//
8462	//    * For each resource, each tag key must be unique, and each tag key can
8463	//    have only one value.
8464	//
8465	//    * Maximum key length - 128 Unicode characters in UTF-8
8466	//
8467	//    * Maximum value length - 256 Unicode characters in UTF-8
8468	//
8469	//    * If your tagging schema is used across multiple services and resources,
8470	//    remember that other services may have restrictions on allowed characters.
8471	//    Generally allowed characters are: letters, numbers, and spaces representable
8472	//    in UTF-8, and the following characters: + - = . _ : / @.
8473	//
8474	//    * Tag keys and values are case-sensitive.
8475	//
8476	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
8477	//    as a prefix for either keys or values as it is reserved for AWS use. You
8478	//    cannot edit or delete tag keys or values with this prefix. Tags with this
8479	//    prefix do not count against your tags per resource limit.
8480	Tags []*Tag `locationName:"tags" type:"list"`
8481}
8482
8483// String returns the string representation
8484func (s CreateClusterInput) String() string {
8485	return awsutil.Prettify(s)
8486}
8487
8488// GoString returns the string representation
8489func (s CreateClusterInput) GoString() string {
8490	return s.String()
8491}
8492
8493// Validate inspects the fields of the type to determine if they are valid.
8494func (s *CreateClusterInput) Validate() error {
8495	invalidParams := request.ErrInvalidParams{Context: "CreateClusterInput"}
8496	if s.DefaultCapacityProviderStrategy != nil {
8497		for i, v := range s.DefaultCapacityProviderStrategy {
8498			if v == nil {
8499				continue
8500			}
8501			if err := v.Validate(); err != nil {
8502				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultCapacityProviderStrategy", i), err.(request.ErrInvalidParams))
8503			}
8504		}
8505	}
8506	if s.Tags != nil {
8507		for i, v := range s.Tags {
8508			if v == nil {
8509				continue
8510			}
8511			if err := v.Validate(); err != nil {
8512				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
8513			}
8514		}
8515	}
8516
8517	if invalidParams.Len() > 0 {
8518		return invalidParams
8519	}
8520	return nil
8521}
8522
8523// SetCapacityProviders sets the CapacityProviders field's value.
8524func (s *CreateClusterInput) SetCapacityProviders(v []*string) *CreateClusterInput {
8525	s.CapacityProviders = v
8526	return s
8527}
8528
8529// SetClusterName sets the ClusterName field's value.
8530func (s *CreateClusterInput) SetClusterName(v string) *CreateClusterInput {
8531	s.ClusterName = &v
8532	return s
8533}
8534
8535// SetDefaultCapacityProviderStrategy sets the DefaultCapacityProviderStrategy field's value.
8536func (s *CreateClusterInput) SetDefaultCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *CreateClusterInput {
8537	s.DefaultCapacityProviderStrategy = v
8538	return s
8539}
8540
8541// SetSettings sets the Settings field's value.
8542func (s *CreateClusterInput) SetSettings(v []*ClusterSetting) *CreateClusterInput {
8543	s.Settings = v
8544	return s
8545}
8546
8547// SetTags sets the Tags field's value.
8548func (s *CreateClusterInput) SetTags(v []*Tag) *CreateClusterInput {
8549	s.Tags = v
8550	return s
8551}
8552
8553type CreateClusterOutput struct {
8554	_ struct{} `type:"structure"`
8555
8556	// The full description of your new cluster.
8557	Cluster *Cluster `locationName:"cluster" type:"structure"`
8558}
8559
8560// String returns the string representation
8561func (s CreateClusterOutput) String() string {
8562	return awsutil.Prettify(s)
8563}
8564
8565// GoString returns the string representation
8566func (s CreateClusterOutput) GoString() string {
8567	return s.String()
8568}
8569
8570// SetCluster sets the Cluster field's value.
8571func (s *CreateClusterOutput) SetCluster(v *Cluster) *CreateClusterOutput {
8572	s.Cluster = v
8573	return s
8574}
8575
8576type CreateServiceInput struct {
8577	_ struct{} `type:"structure"`
8578
8579	// The capacity provider strategy to use for the service.
8580	//
8581	// A capacity provider strategy consists of one or more capacity providers along
8582	// with the base and weight to assign to them. A capacity provider must be associated
8583	// with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders
8584	// API is used to associate a capacity provider with a cluster. Only capacity
8585	// providers with an ACTIVE or UPDATING status can be used.
8586	//
8587	// If a capacityProviderStrategy is specified, the launchType parameter must
8588	// be omitted. If no capacityProviderStrategy or launchType is specified, the
8589	// defaultCapacityProviderStrategy for the cluster is used.
8590	//
8591	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
8592	// provider must already be created. New capacity providers can be created with
8593	// the CreateCapacityProvider API operation.
8594	//
8595	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
8596	// capacity providers. The AWS Fargate capacity providers are available to all
8597	// accounts and only need to be associated with a cluster to be used.
8598	//
8599	// The PutClusterCapacityProviders API operation is used to update the list
8600	// of available capacity providers for a cluster after the cluster is created.
8601	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
8602
8603	// Unique, case-sensitive identifier that you provide to ensure the idempotency
8604	// of the request. Up to 32 ASCII characters are allowed.
8605	ClientToken *string `locationName:"clientToken" type:"string"`
8606
8607	// The short name or full Amazon Resource Name (ARN) of the cluster on which
8608	// to run your service. If you do not specify a cluster, the default cluster
8609	// is assumed.
8610	Cluster *string `locationName:"cluster" type:"string"`
8611
8612	// Optional deployment parameters that control how many tasks run during the
8613	// deployment and the ordering of stopping and starting tasks.
8614	DeploymentConfiguration *DeploymentConfiguration `locationName:"deploymentConfiguration" type:"structure"`
8615
8616	// The deployment controller to use for the service.
8617	DeploymentController *DeploymentController `locationName:"deploymentController" type:"structure"`
8618
8619	// The number of instantiations of the specified task definition to place and
8620	// keep running on your cluster.
8621	//
8622	// This is required if schedulingStrategy is REPLICA or is not specified. If
8623	// schedulingStrategy is DAEMON then this is not required.
8624	DesiredCount *int64 `locationName:"desiredCount" type:"integer"`
8625
8626	// Specifies whether to enable Amazon ECS managed tags for the tasks within
8627	// the service. For more information, see Tagging Your Amazon ECS Resources
8628	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)
8629	// in the Amazon Elastic Container Service Developer Guide.
8630	EnableECSManagedTags *bool `locationName:"enableECSManagedTags" type:"boolean"`
8631
8632	// The period of time, in seconds, that the Amazon ECS service scheduler should
8633	// ignore unhealthy Elastic Load Balancing target health checks after a task
8634	// has first started. This is only valid if your service is configured to use
8635	// a load balancer. If your service's tasks take a while to start and respond
8636	// to Elastic Load Balancing health checks, you can specify a health check grace
8637	// period of up to 2,147,483,647 seconds. During that time, the ECS service
8638	// scheduler ignores health check status. This grace period can prevent the
8639	// ECS service scheduler from marking tasks as unhealthy and stopping them before
8640	// they have time to come up.
8641	HealthCheckGracePeriodSeconds *int64 `locationName:"healthCheckGracePeriodSeconds" type:"integer"`
8642
8643	// The launch type on which to run your service. For more information, see Amazon
8644	// ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
8645	// in the Amazon Elastic Container Service Developer Guide.
8646	//
8647	// If a launchType is specified, the capacityProviderStrategy parameter must
8648	// be omitted.
8649	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
8650
8651	// A load balancer object representing the load balancers to use with your service.
8652	// For more information, see Service Load Balancing (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)
8653	// in the Amazon Elastic Container Service Developer Guide.
8654	//
8655	// If the service is using the rolling update (ECS) deployment controller and
8656	// using either an Application Load Balancer or Network Load Balancer, you can
8657	// specify multiple target groups to attach to the service. The service-linked
8658	// role is required for services that make use of multiple target groups. For
8659	// more information, see Using Service-Linked Roles for Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html)
8660	// in the Amazon Elastic Container Service Developer Guide.
8661	//
8662	// If the service is using the CODE_DEPLOY deployment controller, the service
8663	// is required to use either an Application Load Balancer or Network Load Balancer.
8664	// When creating an AWS CodeDeploy deployment group, you specify two target
8665	// groups (referred to as a targetGroupPair). During a deployment, AWS CodeDeploy
8666	// determines which task set in your service has the status PRIMARY and associates
8667	// one target group with it, and then associates the other target group with
8668	// the replacement task set. The load balancer can also have up to two listeners:
8669	// a required listener for production traffic and an optional listener that
8670	// allows you perform validation tests with Lambda functions before routing
8671	// production traffic to it.
8672	//
8673	// After you create a service using the ECS deployment controller, the load
8674	// balancer name or target group ARN, container name, and container port specified
8675	// in the service definition are immutable. If you are using the CODE_DEPLOY
8676	// deployment controller, these values can be changed when updating the service.
8677	//
8678	// For Application Load Balancers and Network Load Balancers, this object must
8679	// contain the load balancer target group ARN, the container name (as it appears
8680	// in a container definition), and the container port to access from the load
8681	// balancer. When a task from this service is placed on a container instance,
8682	// the container instance and port combination is registered as a target in
8683	// the target group specified here.
8684	//
8685	// For Classic Load Balancers, this object must contain the load balancer name,
8686	// the container name (as it appears in a container definition), and the container
8687	// port to access from the load balancer. When a task from this service is placed
8688	// on a container instance, the container instance is registered with the load
8689	// balancer specified here.
8690	//
8691	// Services with tasks that use the awsvpc network mode (for example, those
8692	// with the Fargate launch type) only support Application Load Balancers and
8693	// Network Load Balancers. Classic Load Balancers are not supported. Also, when
8694	// you create any target groups for these services, you must choose ip as the
8695	// target type, not instance, because tasks that use the awsvpc network mode
8696	// are associated with an elastic network interface, not an Amazon EC2 instance.
8697	LoadBalancers []*LoadBalancer `locationName:"loadBalancers" type:"list"`
8698
8699	// The network configuration for the service. This parameter is required for
8700	// task definitions that use the awsvpc network mode to receive their own elastic
8701	// network interface, and it is not supported for other network modes. For more
8702	// information, see Task Networking (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
8703	// in the Amazon Elastic Container Service Developer Guide.
8704	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
8705
8706	// An array of placement constraint objects to use for tasks in your service.
8707	// You can specify a maximum of 10 constraints per task (this limit includes
8708	// constraints in the task definition and those specified at runtime).
8709	PlacementConstraints []*PlacementConstraint `locationName:"placementConstraints" type:"list"`
8710
8711	// The placement strategy objects to use for tasks in your service. You can
8712	// specify a maximum of five strategy rules per service.
8713	PlacementStrategy []*PlacementStrategy `locationName:"placementStrategy" type:"list"`
8714
8715	// The platform version that your tasks in the service are running on. A platform
8716	// version is specified only for tasks using the Fargate launch type. If one
8717	// isn't specified, the LATEST platform version is used by default. For more
8718	// information, see AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
8719	// in the Amazon Elastic Container Service Developer Guide.
8720	PlatformVersion *string `locationName:"platformVersion" type:"string"`
8721
8722	// Specifies whether to propagate the tags from the task definition or the service
8723	// to the tasks in the service. If no value is specified, the tags are not propagated.
8724	// Tags can only be propagated to the tasks within the service during service
8725	// creation. To add tags to a task after service creation, use the TagResource
8726	// API action.
8727	PropagateTags *string `locationName:"propagateTags" type:"string" enum:"PropagateTags"`
8728
8729	// The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon
8730	// ECS to make calls to your load balancer on your behalf. This parameter is
8731	// only permitted if you are using a load balancer with your service and your
8732	// task definition does not use the awsvpc network mode. If you specify the
8733	// role parameter, you must also specify a load balancer object with the loadBalancers
8734	// parameter.
8735	//
8736	// If your account has already created the Amazon ECS service-linked role, that
8737	// role is used by default for your service unless you specify a role here.
8738	// The service-linked role is required if your task definition uses the awsvpc
8739	// network mode or if the service is configured to use service discovery, an
8740	// external deployment controller, multiple target groups, or Elastic Inference
8741	// accelerators in which case you should not specify a role here. For more information,
8742	// see Using Service-Linked Roles for Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html)
8743	// in the Amazon Elastic Container Service Developer Guide.
8744	//
8745	// If your specified role has a path other than /, then you must either specify
8746	// the full role ARN (this is recommended) or prefix the role name with the
8747	// path. For example, if a role with the name bar has a path of /foo/ then you
8748	// would specify /foo/bar as the role name. For more information, see Friendly
8749	// Names and Paths (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names)
8750	// in the IAM User Guide.
8751	Role *string `locationName:"role" type:"string"`
8752
8753	// The scheduling strategy to use for the service. For more information, see
8754	// Services (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).
8755	//
8756	// There are two service scheduler strategies available:
8757	//
8758	//    * REPLICA-The replica scheduling strategy places and maintains the desired
8759	//    number of tasks across your cluster. By default, the service scheduler
8760	//    spreads tasks across Availability Zones. You can use task placement strategies
8761	//    and constraints to customize task placement decisions. This scheduler
8762	//    strategy is required if the service is using the CODE_DEPLOY or EXTERNAL
8763	//    deployment controller types.
8764	//
8765	//    * DAEMON-The daemon scheduling strategy deploys exactly one task on each
8766	//    active container instance that meets all of the task placement constraints
8767	//    that you specify in your cluster. When you're using this strategy, you
8768	//    don't need to specify a desired number of tasks, a task placement strategy,
8769	//    or use Service Auto Scaling policies. Tasks using the Fargate launch type
8770	//    or the CODE_DEPLOY or EXTERNAL deployment controller types don't support
8771	//    the DAEMON scheduling strategy.
8772	SchedulingStrategy *string `locationName:"schedulingStrategy" type:"string" enum:"SchedulingStrategy"`
8773
8774	// The name of your service. Up to 255 letters (uppercase and lowercase), numbers,
8775	// and hyphens are allowed. Service names must be unique within a cluster, but
8776	// you can have similarly named services in multiple clusters within a Region
8777	// or across multiple Regions.
8778	//
8779	// ServiceName is a required field
8780	ServiceName *string `locationName:"serviceName" type:"string" required:"true"`
8781
8782	// The details of the service discovery registries to assign to this service.
8783	// For more information, see Service Discovery (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).
8784	//
8785	// Service discovery is supported for Fargate tasks if you are using platform
8786	// version v1.1.0 or later. For more information, see AWS Fargate Platform Versions
8787	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).
8788	ServiceRegistries []*ServiceRegistry `locationName:"serviceRegistries" type:"list"`
8789
8790	// The metadata that you apply to the service to help you categorize and organize
8791	// them. Each tag consists of a key and an optional value, both of which you
8792	// define. When a service is deleted, the tags are deleted as well.
8793	//
8794	// The following basic restrictions apply to tags:
8795	//
8796	//    * Maximum number of tags per resource - 50
8797	//
8798	//    * For each resource, each tag key must be unique, and each tag key can
8799	//    have only one value.
8800	//
8801	//    * Maximum key length - 128 Unicode characters in UTF-8
8802	//
8803	//    * Maximum value length - 256 Unicode characters in UTF-8
8804	//
8805	//    * If your tagging schema is used across multiple services and resources,
8806	//    remember that other services may have restrictions on allowed characters.
8807	//    Generally allowed characters are: letters, numbers, and spaces representable
8808	//    in UTF-8, and the following characters: + - = . _ : / @.
8809	//
8810	//    * Tag keys and values are case-sensitive.
8811	//
8812	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
8813	//    as a prefix for either keys or values as it is reserved for AWS use. You
8814	//    cannot edit or delete tag keys or values with this prefix. Tags with this
8815	//    prefix do not count against your tags per resource limit.
8816	Tags []*Tag `locationName:"tags" type:"list"`
8817
8818	// The family and revision (family:revision) or full ARN of the task definition
8819	// to run in your service. If a revision is not specified, the latest ACTIVE
8820	// revision is used.
8821	//
8822	// A task definition must be specified if the service is using the ECS deployment
8823	// controller.
8824	TaskDefinition *string `locationName:"taskDefinition" type:"string"`
8825}
8826
8827// String returns the string representation
8828func (s CreateServiceInput) String() string {
8829	return awsutil.Prettify(s)
8830}
8831
8832// GoString returns the string representation
8833func (s CreateServiceInput) GoString() string {
8834	return s.String()
8835}
8836
8837// Validate inspects the fields of the type to determine if they are valid.
8838func (s *CreateServiceInput) Validate() error {
8839	invalidParams := request.ErrInvalidParams{Context: "CreateServiceInput"}
8840	if s.ServiceName == nil {
8841		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
8842	}
8843	if s.CapacityProviderStrategy != nil {
8844		for i, v := range s.CapacityProviderStrategy {
8845			if v == nil {
8846				continue
8847			}
8848			if err := v.Validate(); err != nil {
8849				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CapacityProviderStrategy", i), err.(request.ErrInvalidParams))
8850			}
8851		}
8852	}
8853	if s.DeploymentController != nil {
8854		if err := s.DeploymentController.Validate(); err != nil {
8855			invalidParams.AddNested("DeploymentController", err.(request.ErrInvalidParams))
8856		}
8857	}
8858	if s.NetworkConfiguration != nil {
8859		if err := s.NetworkConfiguration.Validate(); err != nil {
8860			invalidParams.AddNested("NetworkConfiguration", err.(request.ErrInvalidParams))
8861		}
8862	}
8863	if s.Tags != nil {
8864		for i, v := range s.Tags {
8865			if v == nil {
8866				continue
8867			}
8868			if err := v.Validate(); err != nil {
8869				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
8870			}
8871		}
8872	}
8873
8874	if invalidParams.Len() > 0 {
8875		return invalidParams
8876	}
8877	return nil
8878}
8879
8880// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
8881func (s *CreateServiceInput) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *CreateServiceInput {
8882	s.CapacityProviderStrategy = v
8883	return s
8884}
8885
8886// SetClientToken sets the ClientToken field's value.
8887func (s *CreateServiceInput) SetClientToken(v string) *CreateServiceInput {
8888	s.ClientToken = &v
8889	return s
8890}
8891
8892// SetCluster sets the Cluster field's value.
8893func (s *CreateServiceInput) SetCluster(v string) *CreateServiceInput {
8894	s.Cluster = &v
8895	return s
8896}
8897
8898// SetDeploymentConfiguration sets the DeploymentConfiguration field's value.
8899func (s *CreateServiceInput) SetDeploymentConfiguration(v *DeploymentConfiguration) *CreateServiceInput {
8900	s.DeploymentConfiguration = v
8901	return s
8902}
8903
8904// SetDeploymentController sets the DeploymentController field's value.
8905func (s *CreateServiceInput) SetDeploymentController(v *DeploymentController) *CreateServiceInput {
8906	s.DeploymentController = v
8907	return s
8908}
8909
8910// SetDesiredCount sets the DesiredCount field's value.
8911func (s *CreateServiceInput) SetDesiredCount(v int64) *CreateServiceInput {
8912	s.DesiredCount = &v
8913	return s
8914}
8915
8916// SetEnableECSManagedTags sets the EnableECSManagedTags field's value.
8917func (s *CreateServiceInput) SetEnableECSManagedTags(v bool) *CreateServiceInput {
8918	s.EnableECSManagedTags = &v
8919	return s
8920}
8921
8922// SetHealthCheckGracePeriodSeconds sets the HealthCheckGracePeriodSeconds field's value.
8923func (s *CreateServiceInput) SetHealthCheckGracePeriodSeconds(v int64) *CreateServiceInput {
8924	s.HealthCheckGracePeriodSeconds = &v
8925	return s
8926}
8927
8928// SetLaunchType sets the LaunchType field's value.
8929func (s *CreateServiceInput) SetLaunchType(v string) *CreateServiceInput {
8930	s.LaunchType = &v
8931	return s
8932}
8933
8934// SetLoadBalancers sets the LoadBalancers field's value.
8935func (s *CreateServiceInput) SetLoadBalancers(v []*LoadBalancer) *CreateServiceInput {
8936	s.LoadBalancers = v
8937	return s
8938}
8939
8940// SetNetworkConfiguration sets the NetworkConfiguration field's value.
8941func (s *CreateServiceInput) SetNetworkConfiguration(v *NetworkConfiguration) *CreateServiceInput {
8942	s.NetworkConfiguration = v
8943	return s
8944}
8945
8946// SetPlacementConstraints sets the PlacementConstraints field's value.
8947func (s *CreateServiceInput) SetPlacementConstraints(v []*PlacementConstraint) *CreateServiceInput {
8948	s.PlacementConstraints = v
8949	return s
8950}
8951
8952// SetPlacementStrategy sets the PlacementStrategy field's value.
8953func (s *CreateServiceInput) SetPlacementStrategy(v []*PlacementStrategy) *CreateServiceInput {
8954	s.PlacementStrategy = v
8955	return s
8956}
8957
8958// SetPlatformVersion sets the PlatformVersion field's value.
8959func (s *CreateServiceInput) SetPlatformVersion(v string) *CreateServiceInput {
8960	s.PlatformVersion = &v
8961	return s
8962}
8963
8964// SetPropagateTags sets the PropagateTags field's value.
8965func (s *CreateServiceInput) SetPropagateTags(v string) *CreateServiceInput {
8966	s.PropagateTags = &v
8967	return s
8968}
8969
8970// SetRole sets the Role field's value.
8971func (s *CreateServiceInput) SetRole(v string) *CreateServiceInput {
8972	s.Role = &v
8973	return s
8974}
8975
8976// SetSchedulingStrategy sets the SchedulingStrategy field's value.
8977func (s *CreateServiceInput) SetSchedulingStrategy(v string) *CreateServiceInput {
8978	s.SchedulingStrategy = &v
8979	return s
8980}
8981
8982// SetServiceName sets the ServiceName field's value.
8983func (s *CreateServiceInput) SetServiceName(v string) *CreateServiceInput {
8984	s.ServiceName = &v
8985	return s
8986}
8987
8988// SetServiceRegistries sets the ServiceRegistries field's value.
8989func (s *CreateServiceInput) SetServiceRegistries(v []*ServiceRegistry) *CreateServiceInput {
8990	s.ServiceRegistries = v
8991	return s
8992}
8993
8994// SetTags sets the Tags field's value.
8995func (s *CreateServiceInput) SetTags(v []*Tag) *CreateServiceInput {
8996	s.Tags = v
8997	return s
8998}
8999
9000// SetTaskDefinition sets the TaskDefinition field's value.
9001func (s *CreateServiceInput) SetTaskDefinition(v string) *CreateServiceInput {
9002	s.TaskDefinition = &v
9003	return s
9004}
9005
9006type CreateServiceOutput struct {
9007	_ struct{} `type:"structure"`
9008
9009	// The full description of your service following the create call.
9010	//
9011	// If a service is using the ECS deployment controller, the deploymentController
9012	// and taskSets parameters will not be returned.
9013	//
9014	// If the service is using the CODE_DEPLOY deployment controller, the deploymentController,
9015	// taskSets and deployments parameters will be returned, however the deployments
9016	// parameter will be an empty list.
9017	Service *Service `locationName:"service" type:"structure"`
9018}
9019
9020// String returns the string representation
9021func (s CreateServiceOutput) String() string {
9022	return awsutil.Prettify(s)
9023}
9024
9025// GoString returns the string representation
9026func (s CreateServiceOutput) GoString() string {
9027	return s.String()
9028}
9029
9030// SetService sets the Service field's value.
9031func (s *CreateServiceOutput) SetService(v *Service) *CreateServiceOutput {
9032	s.Service = v
9033	return s
9034}
9035
9036type CreateTaskSetInput struct {
9037	_ struct{} `type:"structure"`
9038
9039	// The capacity provider strategy to use for the task set.
9040	//
9041	// A capacity provider strategy consists of one or more capacity providers along
9042	// with the base and weight to assign to them. A capacity provider must be associated
9043	// with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders
9044	// API is used to associate a capacity provider with a cluster. Only capacity
9045	// providers with an ACTIVE or UPDATING status can be used.
9046	//
9047	// If a capacityProviderStrategy is specified, the launchType parameter must
9048	// be omitted. If no capacityProviderStrategy or launchType is specified, the
9049	// defaultCapacityProviderStrategy for the cluster is used.
9050	//
9051	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
9052	// provider must already be created. New capacity providers can be created with
9053	// the CreateCapacityProvider API operation.
9054	//
9055	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
9056	// capacity providers. The AWS Fargate capacity providers are available to all
9057	// accounts and only need to be associated with a cluster to be used.
9058	//
9059	// The PutClusterCapacityProviders API operation is used to update the list
9060	// of available capacity providers for a cluster after the cluster is created.
9061	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
9062
9063	// Unique, case-sensitive identifier that you provide to ensure the idempotency
9064	// of the request. Up to 32 ASCII characters are allowed.
9065	ClientToken *string `locationName:"clientToken" type:"string"`
9066
9067	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
9068	// the service to create the task set in.
9069	//
9070	// Cluster is a required field
9071	Cluster *string `locationName:"cluster" type:"string" required:"true"`
9072
9073	// An optional non-unique tag that identifies this task set in external systems.
9074	// If the task set is associated with a service discovery registry, the tasks
9075	// in this task set will have the ECS_TASK_SET_EXTERNAL_ID AWS Cloud Map attribute
9076	// set to the provided value.
9077	ExternalId *string `locationName:"externalId" type:"string"`
9078
9079	// The launch type that new tasks in the task set will use. For more information,
9080	// see Amazon ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
9081	// in the Amazon Elastic Container Service Developer Guide.
9082	//
9083	// If a launchType is specified, the capacityProviderStrategy parameter must
9084	// be omitted.
9085	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
9086
9087	// A load balancer object representing the load balancer to use with the task
9088	// set. The supported load balancer types are either an Application Load Balancer
9089	// or a Network Load Balancer.
9090	LoadBalancers []*LoadBalancer `locationName:"loadBalancers" type:"list"`
9091
9092	// An object representing the network configuration for a task or service.
9093	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
9094
9095	// The platform version that the tasks in the task set should use. A platform
9096	// version is specified only for tasks using the Fargate launch type. If one
9097	// isn't specified, the LATEST platform version is used by default.
9098	PlatformVersion *string `locationName:"platformVersion" type:"string"`
9099
9100	// A floating-point percentage of the desired number of tasks to place and keep
9101	// running in the task set.
9102	Scale *Scale `locationName:"scale" type:"structure"`
9103
9104	// The short name or full Amazon Resource Name (ARN) of the service to create
9105	// the task set in.
9106	//
9107	// Service is a required field
9108	Service *string `locationName:"service" type:"string" required:"true"`
9109
9110	// The details of the service discovery registries to assign to this task set.
9111	// For more information, see Service Discovery (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).
9112	ServiceRegistries []*ServiceRegistry `locationName:"serviceRegistries" type:"list"`
9113
9114	// The metadata that you apply to the task set to help you categorize and organize
9115	// them. Each tag consists of a key and an optional value, both of which you
9116	// define. When a service is deleted, the tags are deleted as well.
9117	//
9118	// The following basic restrictions apply to tags:
9119	//
9120	//    * Maximum number of tags per resource - 50
9121	//
9122	//    * For each resource, each tag key must be unique, and each tag key can
9123	//    have only one value.
9124	//
9125	//    * Maximum key length - 128 Unicode characters in UTF-8
9126	//
9127	//    * Maximum value length - 256 Unicode characters in UTF-8
9128	//
9129	//    * If your tagging schema is used across multiple services and resources,
9130	//    remember that other services may have restrictions on allowed characters.
9131	//    Generally allowed characters are: letters, numbers, and spaces representable
9132	//    in UTF-8, and the following characters: + - = . _ : / @.
9133	//
9134	//    * Tag keys and values are case-sensitive.
9135	//
9136	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
9137	//    as a prefix for either keys or values as it is reserved for AWS use. You
9138	//    cannot edit or delete tag keys or values with this prefix. Tags with this
9139	//    prefix do not count against your tags per resource limit.
9140	Tags []*Tag `locationName:"tags" type:"list"`
9141
9142	// The task definition for the tasks in the task set to use.
9143	//
9144	// TaskDefinition is a required field
9145	TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
9146}
9147
9148// String returns the string representation
9149func (s CreateTaskSetInput) String() string {
9150	return awsutil.Prettify(s)
9151}
9152
9153// GoString returns the string representation
9154func (s CreateTaskSetInput) GoString() string {
9155	return s.String()
9156}
9157
9158// Validate inspects the fields of the type to determine if they are valid.
9159func (s *CreateTaskSetInput) Validate() error {
9160	invalidParams := request.ErrInvalidParams{Context: "CreateTaskSetInput"}
9161	if s.Cluster == nil {
9162		invalidParams.Add(request.NewErrParamRequired("Cluster"))
9163	}
9164	if s.Service == nil {
9165		invalidParams.Add(request.NewErrParamRequired("Service"))
9166	}
9167	if s.TaskDefinition == nil {
9168		invalidParams.Add(request.NewErrParamRequired("TaskDefinition"))
9169	}
9170	if s.CapacityProviderStrategy != nil {
9171		for i, v := range s.CapacityProviderStrategy {
9172			if v == nil {
9173				continue
9174			}
9175			if err := v.Validate(); err != nil {
9176				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CapacityProviderStrategy", i), err.(request.ErrInvalidParams))
9177			}
9178		}
9179	}
9180	if s.NetworkConfiguration != nil {
9181		if err := s.NetworkConfiguration.Validate(); err != nil {
9182			invalidParams.AddNested("NetworkConfiguration", err.(request.ErrInvalidParams))
9183		}
9184	}
9185	if s.Tags != nil {
9186		for i, v := range s.Tags {
9187			if v == nil {
9188				continue
9189			}
9190			if err := v.Validate(); err != nil {
9191				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
9192			}
9193		}
9194	}
9195
9196	if invalidParams.Len() > 0 {
9197		return invalidParams
9198	}
9199	return nil
9200}
9201
9202// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
9203func (s *CreateTaskSetInput) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *CreateTaskSetInput {
9204	s.CapacityProviderStrategy = v
9205	return s
9206}
9207
9208// SetClientToken sets the ClientToken field's value.
9209func (s *CreateTaskSetInput) SetClientToken(v string) *CreateTaskSetInput {
9210	s.ClientToken = &v
9211	return s
9212}
9213
9214// SetCluster sets the Cluster field's value.
9215func (s *CreateTaskSetInput) SetCluster(v string) *CreateTaskSetInput {
9216	s.Cluster = &v
9217	return s
9218}
9219
9220// SetExternalId sets the ExternalId field's value.
9221func (s *CreateTaskSetInput) SetExternalId(v string) *CreateTaskSetInput {
9222	s.ExternalId = &v
9223	return s
9224}
9225
9226// SetLaunchType sets the LaunchType field's value.
9227func (s *CreateTaskSetInput) SetLaunchType(v string) *CreateTaskSetInput {
9228	s.LaunchType = &v
9229	return s
9230}
9231
9232// SetLoadBalancers sets the LoadBalancers field's value.
9233func (s *CreateTaskSetInput) SetLoadBalancers(v []*LoadBalancer) *CreateTaskSetInput {
9234	s.LoadBalancers = v
9235	return s
9236}
9237
9238// SetNetworkConfiguration sets the NetworkConfiguration field's value.
9239func (s *CreateTaskSetInput) SetNetworkConfiguration(v *NetworkConfiguration) *CreateTaskSetInput {
9240	s.NetworkConfiguration = v
9241	return s
9242}
9243
9244// SetPlatformVersion sets the PlatformVersion field's value.
9245func (s *CreateTaskSetInput) SetPlatformVersion(v string) *CreateTaskSetInput {
9246	s.PlatformVersion = &v
9247	return s
9248}
9249
9250// SetScale sets the Scale field's value.
9251func (s *CreateTaskSetInput) SetScale(v *Scale) *CreateTaskSetInput {
9252	s.Scale = v
9253	return s
9254}
9255
9256// SetService sets the Service field's value.
9257func (s *CreateTaskSetInput) SetService(v string) *CreateTaskSetInput {
9258	s.Service = &v
9259	return s
9260}
9261
9262// SetServiceRegistries sets the ServiceRegistries field's value.
9263func (s *CreateTaskSetInput) SetServiceRegistries(v []*ServiceRegistry) *CreateTaskSetInput {
9264	s.ServiceRegistries = v
9265	return s
9266}
9267
9268// SetTags sets the Tags field's value.
9269func (s *CreateTaskSetInput) SetTags(v []*Tag) *CreateTaskSetInput {
9270	s.Tags = v
9271	return s
9272}
9273
9274// SetTaskDefinition sets the TaskDefinition field's value.
9275func (s *CreateTaskSetInput) SetTaskDefinition(v string) *CreateTaskSetInput {
9276	s.TaskDefinition = &v
9277	return s
9278}
9279
9280type CreateTaskSetOutput struct {
9281	_ struct{} `type:"structure"`
9282
9283	// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
9284	// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
9285	// desired number of tasks, how many tasks are running, and whether the task
9286	// set serves production traffic.
9287	TaskSet *TaskSet `locationName:"taskSet" type:"structure"`
9288}
9289
9290// String returns the string representation
9291func (s CreateTaskSetOutput) String() string {
9292	return awsutil.Prettify(s)
9293}
9294
9295// GoString returns the string representation
9296func (s CreateTaskSetOutput) GoString() string {
9297	return s.String()
9298}
9299
9300// SetTaskSet sets the TaskSet field's value.
9301func (s *CreateTaskSetOutput) SetTaskSet(v *TaskSet) *CreateTaskSetOutput {
9302	s.TaskSet = v
9303	return s
9304}
9305
9306type DeleteAccountSettingInput struct {
9307	_ struct{} `type:"structure"`
9308
9309	// The resource name for which to disable the account setting. If serviceLongArnFormat
9310	// is specified, the ARN for your Amazon ECS services is affected. If taskLongArnFormat
9311	// is specified, the ARN and resource ID for your Amazon ECS tasks is affected.
9312	// If containerInstanceLongArnFormat is specified, the ARN and resource ID for
9313	// your Amazon ECS container instances is affected. If awsvpcTrunking is specified,
9314	// the ENI limit for your Amazon ECS container instances is affected.
9315	//
9316	// Name is a required field
9317	Name *string `locationName:"name" type:"string" required:"true" enum:"SettingName"`
9318
9319	// The ARN of the principal, which can be an IAM user, IAM role, or the root
9320	// user. If you specify the root user, it disables the account setting for all
9321	// IAM users, IAM roles, and the root user of the account unless an IAM user
9322	// or role explicitly overrides these settings. If this field is omitted, the
9323	// setting is changed only for the authenticated user.
9324	PrincipalArn *string `locationName:"principalArn" type:"string"`
9325}
9326
9327// String returns the string representation
9328func (s DeleteAccountSettingInput) String() string {
9329	return awsutil.Prettify(s)
9330}
9331
9332// GoString returns the string representation
9333func (s DeleteAccountSettingInput) GoString() string {
9334	return s.String()
9335}
9336
9337// Validate inspects the fields of the type to determine if they are valid.
9338func (s *DeleteAccountSettingInput) Validate() error {
9339	invalidParams := request.ErrInvalidParams{Context: "DeleteAccountSettingInput"}
9340	if s.Name == nil {
9341		invalidParams.Add(request.NewErrParamRequired("Name"))
9342	}
9343
9344	if invalidParams.Len() > 0 {
9345		return invalidParams
9346	}
9347	return nil
9348}
9349
9350// SetName sets the Name field's value.
9351func (s *DeleteAccountSettingInput) SetName(v string) *DeleteAccountSettingInput {
9352	s.Name = &v
9353	return s
9354}
9355
9356// SetPrincipalArn sets the PrincipalArn field's value.
9357func (s *DeleteAccountSettingInput) SetPrincipalArn(v string) *DeleteAccountSettingInput {
9358	s.PrincipalArn = &v
9359	return s
9360}
9361
9362type DeleteAccountSettingOutput struct {
9363	_ struct{} `type:"structure"`
9364
9365	// The account setting for the specified principal ARN.
9366	Setting *Setting `locationName:"setting" type:"structure"`
9367}
9368
9369// String returns the string representation
9370func (s DeleteAccountSettingOutput) String() string {
9371	return awsutil.Prettify(s)
9372}
9373
9374// GoString returns the string representation
9375func (s DeleteAccountSettingOutput) GoString() string {
9376	return s.String()
9377}
9378
9379// SetSetting sets the Setting field's value.
9380func (s *DeleteAccountSettingOutput) SetSetting(v *Setting) *DeleteAccountSettingOutput {
9381	s.Setting = v
9382	return s
9383}
9384
9385type DeleteAttributesInput struct {
9386	_ struct{} `type:"structure"`
9387
9388	// The attributes to delete from your resource. You can specify up to 10 attributes
9389	// per request. For custom attributes, specify the attribute name and target
9390	// ID, but do not specify the value. If you specify the target ID using the
9391	// short form, you must also specify the target type.
9392	//
9393	// Attributes is a required field
9394	Attributes []*Attribute `locationName:"attributes" type:"list" required:"true"`
9395
9396	// The short name or full Amazon Resource Name (ARN) of the cluster that contains
9397	// the resource to delete attributes. If you do not specify a cluster, the default
9398	// cluster is assumed.
9399	Cluster *string `locationName:"cluster" type:"string"`
9400}
9401
9402// String returns the string representation
9403func (s DeleteAttributesInput) String() string {
9404	return awsutil.Prettify(s)
9405}
9406
9407// GoString returns the string representation
9408func (s DeleteAttributesInput) GoString() string {
9409	return s.String()
9410}
9411
9412// Validate inspects the fields of the type to determine if they are valid.
9413func (s *DeleteAttributesInput) Validate() error {
9414	invalidParams := request.ErrInvalidParams{Context: "DeleteAttributesInput"}
9415	if s.Attributes == nil {
9416		invalidParams.Add(request.NewErrParamRequired("Attributes"))
9417	}
9418	if s.Attributes != nil {
9419		for i, v := range s.Attributes {
9420			if v == nil {
9421				continue
9422			}
9423			if err := v.Validate(); err != nil {
9424				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
9425			}
9426		}
9427	}
9428
9429	if invalidParams.Len() > 0 {
9430		return invalidParams
9431	}
9432	return nil
9433}
9434
9435// SetAttributes sets the Attributes field's value.
9436func (s *DeleteAttributesInput) SetAttributes(v []*Attribute) *DeleteAttributesInput {
9437	s.Attributes = v
9438	return s
9439}
9440
9441// SetCluster sets the Cluster field's value.
9442func (s *DeleteAttributesInput) SetCluster(v string) *DeleteAttributesInput {
9443	s.Cluster = &v
9444	return s
9445}
9446
9447type DeleteAttributesOutput struct {
9448	_ struct{} `type:"structure"`
9449
9450	// A list of attribute objects that were successfully deleted from your resource.
9451	Attributes []*Attribute `locationName:"attributes" type:"list"`
9452}
9453
9454// String returns the string representation
9455func (s DeleteAttributesOutput) String() string {
9456	return awsutil.Prettify(s)
9457}
9458
9459// GoString returns the string representation
9460func (s DeleteAttributesOutput) GoString() string {
9461	return s.String()
9462}
9463
9464// SetAttributes sets the Attributes field's value.
9465func (s *DeleteAttributesOutput) SetAttributes(v []*Attribute) *DeleteAttributesOutput {
9466	s.Attributes = v
9467	return s
9468}
9469
9470type DeleteClusterInput struct {
9471	_ struct{} `type:"structure"`
9472
9473	// The short name or full Amazon Resource Name (ARN) of the cluster to delete.
9474	//
9475	// Cluster is a required field
9476	Cluster *string `locationName:"cluster" type:"string" required:"true"`
9477}
9478
9479// String returns the string representation
9480func (s DeleteClusterInput) String() string {
9481	return awsutil.Prettify(s)
9482}
9483
9484// GoString returns the string representation
9485func (s DeleteClusterInput) GoString() string {
9486	return s.String()
9487}
9488
9489// Validate inspects the fields of the type to determine if they are valid.
9490func (s *DeleteClusterInput) Validate() error {
9491	invalidParams := request.ErrInvalidParams{Context: "DeleteClusterInput"}
9492	if s.Cluster == nil {
9493		invalidParams.Add(request.NewErrParamRequired("Cluster"))
9494	}
9495
9496	if invalidParams.Len() > 0 {
9497		return invalidParams
9498	}
9499	return nil
9500}
9501
9502// SetCluster sets the Cluster field's value.
9503func (s *DeleteClusterInput) SetCluster(v string) *DeleteClusterInput {
9504	s.Cluster = &v
9505	return s
9506}
9507
9508type DeleteClusterOutput struct {
9509	_ struct{} `type:"structure"`
9510
9511	// The full description of the deleted cluster.
9512	Cluster *Cluster `locationName:"cluster" type:"structure"`
9513}
9514
9515// String returns the string representation
9516func (s DeleteClusterOutput) String() string {
9517	return awsutil.Prettify(s)
9518}
9519
9520// GoString returns the string representation
9521func (s DeleteClusterOutput) GoString() string {
9522	return s.String()
9523}
9524
9525// SetCluster sets the Cluster field's value.
9526func (s *DeleteClusterOutput) SetCluster(v *Cluster) *DeleteClusterOutput {
9527	s.Cluster = v
9528	return s
9529}
9530
9531type DeleteServiceInput struct {
9532	_ struct{} `type:"structure"`
9533
9534	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
9535	// the service to delete. If you do not specify a cluster, the default cluster
9536	// is assumed.
9537	Cluster *string `locationName:"cluster" type:"string"`
9538
9539	// If true, allows you to delete a service even if it has not been scaled down
9540	// to zero tasks. It is only necessary to use this if the service is using the
9541	// REPLICA scheduling strategy.
9542	Force *bool `locationName:"force" type:"boolean"`
9543
9544	// The name of the service to delete.
9545	//
9546	// Service is a required field
9547	Service *string `locationName:"service" type:"string" required:"true"`
9548}
9549
9550// String returns the string representation
9551func (s DeleteServiceInput) String() string {
9552	return awsutil.Prettify(s)
9553}
9554
9555// GoString returns the string representation
9556func (s DeleteServiceInput) GoString() string {
9557	return s.String()
9558}
9559
9560// Validate inspects the fields of the type to determine if they are valid.
9561func (s *DeleteServiceInput) Validate() error {
9562	invalidParams := request.ErrInvalidParams{Context: "DeleteServiceInput"}
9563	if s.Service == nil {
9564		invalidParams.Add(request.NewErrParamRequired("Service"))
9565	}
9566
9567	if invalidParams.Len() > 0 {
9568		return invalidParams
9569	}
9570	return nil
9571}
9572
9573// SetCluster sets the Cluster field's value.
9574func (s *DeleteServiceInput) SetCluster(v string) *DeleteServiceInput {
9575	s.Cluster = &v
9576	return s
9577}
9578
9579// SetForce sets the Force field's value.
9580func (s *DeleteServiceInput) SetForce(v bool) *DeleteServiceInput {
9581	s.Force = &v
9582	return s
9583}
9584
9585// SetService sets the Service field's value.
9586func (s *DeleteServiceInput) SetService(v string) *DeleteServiceInput {
9587	s.Service = &v
9588	return s
9589}
9590
9591type DeleteServiceOutput struct {
9592	_ struct{} `type:"structure"`
9593
9594	// The full description of the deleted service.
9595	Service *Service `locationName:"service" type:"structure"`
9596}
9597
9598// String returns the string representation
9599func (s DeleteServiceOutput) String() string {
9600	return awsutil.Prettify(s)
9601}
9602
9603// GoString returns the string representation
9604func (s DeleteServiceOutput) GoString() string {
9605	return s.String()
9606}
9607
9608// SetService sets the Service field's value.
9609func (s *DeleteServiceOutput) SetService(v *Service) *DeleteServiceOutput {
9610	s.Service = v
9611	return s
9612}
9613
9614type DeleteTaskSetInput struct {
9615	_ struct{} `type:"structure"`
9616
9617	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
9618	// the service that the task set exists in to delete.
9619	//
9620	// Cluster is a required field
9621	Cluster *string `locationName:"cluster" type:"string" required:"true"`
9622
9623	// If true, this allows you to delete a task set even if it hasn't been scaled
9624	// down to zero.
9625	Force *bool `locationName:"force" type:"boolean"`
9626
9627	// The short name or full Amazon Resource Name (ARN) of the service that hosts
9628	// the task set to delete.
9629	//
9630	// Service is a required field
9631	Service *string `locationName:"service" type:"string" required:"true"`
9632
9633	// The task set ID or full Amazon Resource Name (ARN) of the task set to delete.
9634	//
9635	// TaskSet is a required field
9636	TaskSet *string `locationName:"taskSet" type:"string" required:"true"`
9637}
9638
9639// String returns the string representation
9640func (s DeleteTaskSetInput) String() string {
9641	return awsutil.Prettify(s)
9642}
9643
9644// GoString returns the string representation
9645func (s DeleteTaskSetInput) GoString() string {
9646	return s.String()
9647}
9648
9649// Validate inspects the fields of the type to determine if they are valid.
9650func (s *DeleteTaskSetInput) Validate() error {
9651	invalidParams := request.ErrInvalidParams{Context: "DeleteTaskSetInput"}
9652	if s.Cluster == nil {
9653		invalidParams.Add(request.NewErrParamRequired("Cluster"))
9654	}
9655	if s.Service == nil {
9656		invalidParams.Add(request.NewErrParamRequired("Service"))
9657	}
9658	if s.TaskSet == nil {
9659		invalidParams.Add(request.NewErrParamRequired("TaskSet"))
9660	}
9661
9662	if invalidParams.Len() > 0 {
9663		return invalidParams
9664	}
9665	return nil
9666}
9667
9668// SetCluster sets the Cluster field's value.
9669func (s *DeleteTaskSetInput) SetCluster(v string) *DeleteTaskSetInput {
9670	s.Cluster = &v
9671	return s
9672}
9673
9674// SetForce sets the Force field's value.
9675func (s *DeleteTaskSetInput) SetForce(v bool) *DeleteTaskSetInput {
9676	s.Force = &v
9677	return s
9678}
9679
9680// SetService sets the Service field's value.
9681func (s *DeleteTaskSetInput) SetService(v string) *DeleteTaskSetInput {
9682	s.Service = &v
9683	return s
9684}
9685
9686// SetTaskSet sets the TaskSet field's value.
9687func (s *DeleteTaskSetInput) SetTaskSet(v string) *DeleteTaskSetInput {
9688	s.TaskSet = &v
9689	return s
9690}
9691
9692type DeleteTaskSetOutput struct {
9693	_ struct{} `type:"structure"`
9694
9695	// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
9696	// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
9697	// desired number of tasks, how many tasks are running, and whether the task
9698	// set serves production traffic.
9699	TaskSet *TaskSet `locationName:"taskSet" type:"structure"`
9700}
9701
9702// String returns the string representation
9703func (s DeleteTaskSetOutput) String() string {
9704	return awsutil.Prettify(s)
9705}
9706
9707// GoString returns the string representation
9708func (s DeleteTaskSetOutput) GoString() string {
9709	return s.String()
9710}
9711
9712// SetTaskSet sets the TaskSet field's value.
9713func (s *DeleteTaskSetOutput) SetTaskSet(v *TaskSet) *DeleteTaskSetOutput {
9714	s.TaskSet = v
9715	return s
9716}
9717
9718// The details of an Amazon ECS service deployment. This is used only when a
9719// service uses the ECS deployment controller type.
9720type Deployment struct {
9721	_ struct{} `type:"structure"`
9722
9723	// The capacity provider strategy that the deployment is using.
9724	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
9725
9726	// The Unix timestamp for when the service deployment was created.
9727	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`
9728
9729	// The most recent desired count of tasks that was specified for the service
9730	// to deploy or maintain.
9731	DesiredCount *int64 `locationName:"desiredCount" type:"integer"`
9732
9733	// The ID of the deployment.
9734	Id *string `locationName:"id" type:"string"`
9735
9736	// The launch type the tasks in the service are using. For more information,
9737	// see Amazon ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
9738	// in the Amazon Elastic Container Service Developer Guide.
9739	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
9740
9741	// The VPC subnet and security group configuration for tasks that receive their
9742	// own elastic network interface by using the awsvpc networking mode.
9743	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
9744
9745	// The number of tasks in the deployment that are in the PENDING status.
9746	PendingCount *int64 `locationName:"pendingCount" type:"integer"`
9747
9748	// The platform version on which your tasks in the service are running. A platform
9749	// version is only specified for tasks using the Fargate launch type. If one
9750	// is not specified, the LATEST platform version is used by default. For more
9751	// information, see AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
9752	// in the Amazon Elastic Container Service Developer Guide.
9753	PlatformVersion *string `locationName:"platformVersion" type:"string"`
9754
9755	// The number of tasks in the deployment that are in the RUNNING status.
9756	RunningCount *int64 `locationName:"runningCount" type:"integer"`
9757
9758	// The status of the deployment. The following describes each state:
9759	//
9760	// PRIMARY
9761	//
9762	// The most recent deployment of a service.
9763	//
9764	// ACTIVE
9765	//
9766	// A service deployment that still has running tasks, but are in the process
9767	// of being replaced with a new PRIMARY deployment.
9768	//
9769	// INACTIVE
9770	//
9771	// A deployment that has been completely replaced.
9772	Status *string `locationName:"status" type:"string"`
9773
9774	// The most recent task definition that was specified for the tasks in the service
9775	// to use.
9776	TaskDefinition *string `locationName:"taskDefinition" type:"string"`
9777
9778	// The Unix timestamp for when the service deployment was last updated.
9779	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
9780}
9781
9782// String returns the string representation
9783func (s Deployment) String() string {
9784	return awsutil.Prettify(s)
9785}
9786
9787// GoString returns the string representation
9788func (s Deployment) GoString() string {
9789	return s.String()
9790}
9791
9792// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
9793func (s *Deployment) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *Deployment {
9794	s.CapacityProviderStrategy = v
9795	return s
9796}
9797
9798// SetCreatedAt sets the CreatedAt field's value.
9799func (s *Deployment) SetCreatedAt(v time.Time) *Deployment {
9800	s.CreatedAt = &v
9801	return s
9802}
9803
9804// SetDesiredCount sets the DesiredCount field's value.
9805func (s *Deployment) SetDesiredCount(v int64) *Deployment {
9806	s.DesiredCount = &v
9807	return s
9808}
9809
9810// SetId sets the Id field's value.
9811func (s *Deployment) SetId(v string) *Deployment {
9812	s.Id = &v
9813	return s
9814}
9815
9816// SetLaunchType sets the LaunchType field's value.
9817func (s *Deployment) SetLaunchType(v string) *Deployment {
9818	s.LaunchType = &v
9819	return s
9820}
9821
9822// SetNetworkConfiguration sets the NetworkConfiguration field's value.
9823func (s *Deployment) SetNetworkConfiguration(v *NetworkConfiguration) *Deployment {
9824	s.NetworkConfiguration = v
9825	return s
9826}
9827
9828// SetPendingCount sets the PendingCount field's value.
9829func (s *Deployment) SetPendingCount(v int64) *Deployment {
9830	s.PendingCount = &v
9831	return s
9832}
9833
9834// SetPlatformVersion sets the PlatformVersion field's value.
9835func (s *Deployment) SetPlatformVersion(v string) *Deployment {
9836	s.PlatformVersion = &v
9837	return s
9838}
9839
9840// SetRunningCount sets the RunningCount field's value.
9841func (s *Deployment) SetRunningCount(v int64) *Deployment {
9842	s.RunningCount = &v
9843	return s
9844}
9845
9846// SetStatus sets the Status field's value.
9847func (s *Deployment) SetStatus(v string) *Deployment {
9848	s.Status = &v
9849	return s
9850}
9851
9852// SetTaskDefinition sets the TaskDefinition field's value.
9853func (s *Deployment) SetTaskDefinition(v string) *Deployment {
9854	s.TaskDefinition = &v
9855	return s
9856}
9857
9858// SetUpdatedAt sets the UpdatedAt field's value.
9859func (s *Deployment) SetUpdatedAt(v time.Time) *Deployment {
9860	s.UpdatedAt = &v
9861	return s
9862}
9863
9864// Optional deployment parameters that control how many tasks run during a deployment
9865// and the ordering of stopping and starting tasks.
9866type DeploymentConfiguration struct {
9867	_ struct{} `type:"structure"`
9868
9869	// If a service is using the rolling update (ECS) deployment type, the maximum
9870	// percent parameter represents an upper limit on the number of tasks in a service
9871	// that are allowed in the RUNNING or PENDING state during a deployment, as
9872	// a percentage of the desired number of tasks (rounded down to the nearest
9873	// integer), and while any container instances are in the DRAINING state if
9874	// the service contains tasks using the EC2 launch type. This parameter enables
9875	// you to define the deployment batch size. For example, if your service has
9876	// a desired number of four tasks and a maximum percent value of 200%, the scheduler
9877	// may start four new tasks before stopping the four older tasks (provided that
9878	// the cluster resources required to do this are available). The default value
9879	// for maximum percent is 200%.
9880	//
9881	// If a service is using the blue/green (CODE_DEPLOY) or EXTERNAL deployment
9882	// types and tasks that use the EC2 launch type, the maximum percent value is
9883	// set to the default value and is used to define the upper limit on the number
9884	// of the tasks in the service that remain in the RUNNING state while the container
9885	// instances are in the DRAINING state. If the tasks in the service use the
9886	// Fargate launch type, the maximum percent value is not used, although it is
9887	// returned when describing your service.
9888	MaximumPercent *int64 `locationName:"maximumPercent" type:"integer"`
9889
9890	// If a service is using the rolling update (ECS) deployment type, the minimum
9891	// healthy percent represents a lower limit on the number of tasks in a service
9892	// that must remain in the RUNNING state during a deployment, as a percentage
9893	// of the desired number of tasks (rounded up to the nearest integer), and while
9894	// any container instances are in the DRAINING state if the service contains
9895	// tasks using the EC2 launch type. This parameter enables you to deploy without
9896	// using additional cluster capacity. For example, if your service has a desired
9897	// number of four tasks and a minimum healthy percent of 50%, the scheduler
9898	// may stop two existing tasks to free up cluster capacity before starting two
9899	// new tasks. Tasks for services that do not use a load balancer are considered
9900	// healthy if they are in the RUNNING state; tasks for services that do use
9901	// a load balancer are considered healthy if they are in the RUNNING state and
9902	// they are reported as healthy by the load balancer. The default value for
9903	// minimum healthy percent is 100%.
9904	//
9905	// If a service is using the blue/green (CODE_DEPLOY) or EXTERNAL deployment
9906	// types and tasks that use the EC2 launch type, the minimum healthy percent
9907	// value is set to the default value and is used to define the lower limit on
9908	// the number of the tasks in the service that remain in the RUNNING state while
9909	// the container instances are in the DRAINING state. If the tasks in the service
9910	// use the Fargate launch type, the minimum healthy percent value is not used,
9911	// although it is returned when describing your service.
9912	MinimumHealthyPercent *int64 `locationName:"minimumHealthyPercent" type:"integer"`
9913}
9914
9915// String returns the string representation
9916func (s DeploymentConfiguration) String() string {
9917	return awsutil.Prettify(s)
9918}
9919
9920// GoString returns the string representation
9921func (s DeploymentConfiguration) GoString() string {
9922	return s.String()
9923}
9924
9925// SetMaximumPercent sets the MaximumPercent field's value.
9926func (s *DeploymentConfiguration) SetMaximumPercent(v int64) *DeploymentConfiguration {
9927	s.MaximumPercent = &v
9928	return s
9929}
9930
9931// SetMinimumHealthyPercent sets the MinimumHealthyPercent field's value.
9932func (s *DeploymentConfiguration) SetMinimumHealthyPercent(v int64) *DeploymentConfiguration {
9933	s.MinimumHealthyPercent = &v
9934	return s
9935}
9936
9937// The deployment controller to use for the service. For more information, see
9938// Amazon ECS Deployment Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)
9939// in the Amazon Elastic Container Service Developer Guide.
9940type DeploymentController struct {
9941	_ struct{} `type:"structure"`
9942
9943	// The deployment controller type to use.
9944	//
9945	// There are three deployment controller types available:
9946	//
9947	// ECS
9948	//
9949	// The rolling update (ECS) deployment type involves replacing the current running
9950	// version of the container with the latest version. The number of containers
9951	// Amazon ECS adds or removes from the service during a rolling update is controlled
9952	// by adjusting the minimum and maximum number of healthy tasks allowed during
9953	// a service deployment, as specified in the DeploymentConfiguration.
9954	//
9955	// CODE_DEPLOY
9956	//
9957	// The blue/green (CODE_DEPLOY) deployment type uses the blue/green deployment
9958	// model powered by AWS CodeDeploy, which allows you to verify a new deployment
9959	// of a service before sending production traffic to it.
9960	//
9961	// EXTERNAL
9962	//
9963	// The external (EXTERNAL) deployment type enables you to use any third-party
9964	// deployment controller for full control over the deployment process for an
9965	// Amazon ECS service.
9966	//
9967	// Type is a required field
9968	Type *string `locationName:"type" type:"string" required:"true" enum:"DeploymentControllerType"`
9969}
9970
9971// String returns the string representation
9972func (s DeploymentController) String() string {
9973	return awsutil.Prettify(s)
9974}
9975
9976// GoString returns the string representation
9977func (s DeploymentController) GoString() string {
9978	return s.String()
9979}
9980
9981// Validate inspects the fields of the type to determine if they are valid.
9982func (s *DeploymentController) Validate() error {
9983	invalidParams := request.ErrInvalidParams{Context: "DeploymentController"}
9984	if s.Type == nil {
9985		invalidParams.Add(request.NewErrParamRequired("Type"))
9986	}
9987
9988	if invalidParams.Len() > 0 {
9989		return invalidParams
9990	}
9991	return nil
9992}
9993
9994// SetType sets the Type field's value.
9995func (s *DeploymentController) SetType(v string) *DeploymentController {
9996	s.Type = &v
9997	return s
9998}
9999
10000type DeregisterContainerInstanceInput struct {
10001	_ struct{} `type:"structure"`
10002
10003	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
10004	// the container instance to deregister. If you do not specify a cluster, the
10005	// default cluster is assumed.
10006	Cluster *string `locationName:"cluster" type:"string"`
10007
10008	// The container instance ID or full ARN of the container instance to deregister.
10009	// The ARN contains the arn:aws:ecs namespace, followed by the Region of the
10010	// container instance, the AWS account ID of the container instance owner, the
10011	// container-instance namespace, and then the container instance ID. For example,
10012	// arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID.
10013	//
10014	// ContainerInstance is a required field
10015	ContainerInstance *string `locationName:"containerInstance" type:"string" required:"true"`
10016
10017	// Forces the deregistration of the container instance. If you have tasks running
10018	// on the container instance when you deregister it with the force option, these
10019	// tasks remain running until you terminate the instance or the tasks stop through
10020	// some other means, but they are orphaned (no longer monitored or accounted
10021	// for by Amazon ECS). If an orphaned task on your container instance is part
10022	// of an Amazon ECS service, then the service scheduler starts another copy
10023	// of that task, on a different container instance if possible.
10024	//
10025	// Any containers in orphaned service tasks that are registered with a Classic
10026	// Load Balancer or an Application Load Balancer target group are deregistered.
10027	// They begin connection draining according to the settings on the load balancer
10028	// or target group.
10029	Force *bool `locationName:"force" type:"boolean"`
10030}
10031
10032// String returns the string representation
10033func (s DeregisterContainerInstanceInput) String() string {
10034	return awsutil.Prettify(s)
10035}
10036
10037// GoString returns the string representation
10038func (s DeregisterContainerInstanceInput) GoString() string {
10039	return s.String()
10040}
10041
10042// Validate inspects the fields of the type to determine if they are valid.
10043func (s *DeregisterContainerInstanceInput) Validate() error {
10044	invalidParams := request.ErrInvalidParams{Context: "DeregisterContainerInstanceInput"}
10045	if s.ContainerInstance == nil {
10046		invalidParams.Add(request.NewErrParamRequired("ContainerInstance"))
10047	}
10048
10049	if invalidParams.Len() > 0 {
10050		return invalidParams
10051	}
10052	return nil
10053}
10054
10055// SetCluster sets the Cluster field's value.
10056func (s *DeregisterContainerInstanceInput) SetCluster(v string) *DeregisterContainerInstanceInput {
10057	s.Cluster = &v
10058	return s
10059}
10060
10061// SetContainerInstance sets the ContainerInstance field's value.
10062func (s *DeregisterContainerInstanceInput) SetContainerInstance(v string) *DeregisterContainerInstanceInput {
10063	s.ContainerInstance = &v
10064	return s
10065}
10066
10067// SetForce sets the Force field's value.
10068func (s *DeregisterContainerInstanceInput) SetForce(v bool) *DeregisterContainerInstanceInput {
10069	s.Force = &v
10070	return s
10071}
10072
10073type DeregisterContainerInstanceOutput struct {
10074	_ struct{} `type:"structure"`
10075
10076	// The container instance that was deregistered.
10077	ContainerInstance *ContainerInstance `locationName:"containerInstance" type:"structure"`
10078}
10079
10080// String returns the string representation
10081func (s DeregisterContainerInstanceOutput) String() string {
10082	return awsutil.Prettify(s)
10083}
10084
10085// GoString returns the string representation
10086func (s DeregisterContainerInstanceOutput) GoString() string {
10087	return s.String()
10088}
10089
10090// SetContainerInstance sets the ContainerInstance field's value.
10091func (s *DeregisterContainerInstanceOutput) SetContainerInstance(v *ContainerInstance) *DeregisterContainerInstanceOutput {
10092	s.ContainerInstance = v
10093	return s
10094}
10095
10096type DeregisterTaskDefinitionInput struct {
10097	_ struct{} `type:"structure"`
10098
10099	// The family and revision (family:revision) or full Amazon Resource Name (ARN)
10100	// of the task definition to deregister. You must specify a revision.
10101	//
10102	// TaskDefinition is a required field
10103	TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
10104}
10105
10106// String returns the string representation
10107func (s DeregisterTaskDefinitionInput) String() string {
10108	return awsutil.Prettify(s)
10109}
10110
10111// GoString returns the string representation
10112func (s DeregisterTaskDefinitionInput) GoString() string {
10113	return s.String()
10114}
10115
10116// Validate inspects the fields of the type to determine if they are valid.
10117func (s *DeregisterTaskDefinitionInput) Validate() error {
10118	invalidParams := request.ErrInvalidParams{Context: "DeregisterTaskDefinitionInput"}
10119	if s.TaskDefinition == nil {
10120		invalidParams.Add(request.NewErrParamRequired("TaskDefinition"))
10121	}
10122
10123	if invalidParams.Len() > 0 {
10124		return invalidParams
10125	}
10126	return nil
10127}
10128
10129// SetTaskDefinition sets the TaskDefinition field's value.
10130func (s *DeregisterTaskDefinitionInput) SetTaskDefinition(v string) *DeregisterTaskDefinitionInput {
10131	s.TaskDefinition = &v
10132	return s
10133}
10134
10135type DeregisterTaskDefinitionOutput struct {
10136	_ struct{} `type:"structure"`
10137
10138	// The full description of the deregistered task.
10139	TaskDefinition *TaskDefinition `locationName:"taskDefinition" type:"structure"`
10140}
10141
10142// String returns the string representation
10143func (s DeregisterTaskDefinitionOutput) String() string {
10144	return awsutil.Prettify(s)
10145}
10146
10147// GoString returns the string representation
10148func (s DeregisterTaskDefinitionOutput) GoString() string {
10149	return s.String()
10150}
10151
10152// SetTaskDefinition sets the TaskDefinition field's value.
10153func (s *DeregisterTaskDefinitionOutput) SetTaskDefinition(v *TaskDefinition) *DeregisterTaskDefinitionOutput {
10154	s.TaskDefinition = v
10155	return s
10156}
10157
10158type DescribeCapacityProvidersInput struct {
10159	_ struct{} `type:"structure"`
10160
10161	// The short name or full Amazon Resource Name (ARN) of one or more capacity
10162	// providers. Up to 100 capacity providers can be described in an action.
10163	CapacityProviders []*string `locationName:"capacityProviders" type:"list"`
10164
10165	// Specifies whether or not you want to see the resource tags for the capacity
10166	// provider. If TAGS is specified, the tags are included in the response. If
10167	// this field is omitted, tags are not included in the response.
10168	Include []*string `locationName:"include" type:"list"`
10169
10170	// The maximum number of account setting results returned by DescribeCapacityProviders
10171	// in paginated output. When this parameter is used, DescribeCapacityProviders
10172	// only returns maxResults results in a single page along with a nextToken response
10173	// element. The remaining results of the initial request can be seen by sending
10174	// another DescribeCapacityProviders request with the returned nextToken value.
10175	// This value can be between 1 and 10. If this parameter is not used, then DescribeCapacityProviders
10176	// returns up to 10 results and a nextToken value if applicable.
10177	MaxResults *int64 `locationName:"maxResults" type:"integer"`
10178
10179	// The nextToken value returned from a previous paginated DescribeCapacityProviders
10180	// request where maxResults was used and the results exceeded the value of that
10181	// parameter. Pagination continues from the end of the previous results that
10182	// returned the nextToken value.
10183	//
10184	// This token should be treated as an opaque identifier that is only used to
10185	// retrieve the next items in a list and not for other programmatic purposes.
10186	NextToken *string `locationName:"nextToken" type:"string"`
10187}
10188
10189// String returns the string representation
10190func (s DescribeCapacityProvidersInput) String() string {
10191	return awsutil.Prettify(s)
10192}
10193
10194// GoString returns the string representation
10195func (s DescribeCapacityProvidersInput) GoString() string {
10196	return s.String()
10197}
10198
10199// SetCapacityProviders sets the CapacityProviders field's value.
10200func (s *DescribeCapacityProvidersInput) SetCapacityProviders(v []*string) *DescribeCapacityProvidersInput {
10201	s.CapacityProviders = v
10202	return s
10203}
10204
10205// SetInclude sets the Include field's value.
10206func (s *DescribeCapacityProvidersInput) SetInclude(v []*string) *DescribeCapacityProvidersInput {
10207	s.Include = v
10208	return s
10209}
10210
10211// SetMaxResults sets the MaxResults field's value.
10212func (s *DescribeCapacityProvidersInput) SetMaxResults(v int64) *DescribeCapacityProvidersInput {
10213	s.MaxResults = &v
10214	return s
10215}
10216
10217// SetNextToken sets the NextToken field's value.
10218func (s *DescribeCapacityProvidersInput) SetNextToken(v string) *DescribeCapacityProvidersInput {
10219	s.NextToken = &v
10220	return s
10221}
10222
10223type DescribeCapacityProvidersOutput struct {
10224	_ struct{} `type:"structure"`
10225
10226	// The list of capacity providers.
10227	CapacityProviders []*CapacityProvider `locationName:"capacityProviders" type:"list"`
10228
10229	// Any failures associated with the call.
10230	Failures []*Failure `locationName:"failures" type:"list"`
10231
10232	// The nextToken value to include in a future DescribeCapacityProviders request.
10233	// When the results of a DescribeCapacityProviders request exceed maxResults,
10234	// this value can be used to retrieve the next page of results. This value is
10235	// null when there are no more results to return.
10236	NextToken *string `locationName:"nextToken" type:"string"`
10237}
10238
10239// String returns the string representation
10240func (s DescribeCapacityProvidersOutput) String() string {
10241	return awsutil.Prettify(s)
10242}
10243
10244// GoString returns the string representation
10245func (s DescribeCapacityProvidersOutput) GoString() string {
10246	return s.String()
10247}
10248
10249// SetCapacityProviders sets the CapacityProviders field's value.
10250func (s *DescribeCapacityProvidersOutput) SetCapacityProviders(v []*CapacityProvider) *DescribeCapacityProvidersOutput {
10251	s.CapacityProviders = v
10252	return s
10253}
10254
10255// SetFailures sets the Failures field's value.
10256func (s *DescribeCapacityProvidersOutput) SetFailures(v []*Failure) *DescribeCapacityProvidersOutput {
10257	s.Failures = v
10258	return s
10259}
10260
10261// SetNextToken sets the NextToken field's value.
10262func (s *DescribeCapacityProvidersOutput) SetNextToken(v string) *DescribeCapacityProvidersOutput {
10263	s.NextToken = &v
10264	return s
10265}
10266
10267type DescribeClustersInput struct {
10268	_ struct{} `type:"structure"`
10269
10270	// A list of up to 100 cluster names or full cluster Amazon Resource Name (ARN)
10271	// entries. If you do not specify a cluster, the default cluster is assumed.
10272	Clusters []*string `locationName:"clusters" type:"list"`
10273
10274	// Whether to include additional information about your clusters in the response.
10275	// If this field is omitted, the attachments, statistics, and tags are not included.
10276	//
10277	// If ATTACHMENTS is specified, the attachments for the container instances
10278	// or tasks within the cluster are included.
10279	//
10280	// If SETTINGS is specified, the settings for the cluster are included.
10281	//
10282	// If STATISTICS is specified, the following additional information, separated
10283	// by launch type, is included:
10284	//
10285	//    * runningEC2TasksCount
10286	//
10287	//    * runningFargateTasksCount
10288	//
10289	//    * pendingEC2TasksCount
10290	//
10291	//    * pendingFargateTasksCount
10292	//
10293	//    * activeEC2ServiceCount
10294	//
10295	//    * activeFargateServiceCount
10296	//
10297	//    * drainingEC2ServiceCount
10298	//
10299	//    * drainingFargateServiceCount
10300	//
10301	// If TAGS is specified, the metadata tags associated with the cluster are included.
10302	Include []*string `locationName:"include" type:"list"`
10303}
10304
10305// String returns the string representation
10306func (s DescribeClustersInput) String() string {
10307	return awsutil.Prettify(s)
10308}
10309
10310// GoString returns the string representation
10311func (s DescribeClustersInput) GoString() string {
10312	return s.String()
10313}
10314
10315// SetClusters sets the Clusters field's value.
10316func (s *DescribeClustersInput) SetClusters(v []*string) *DescribeClustersInput {
10317	s.Clusters = v
10318	return s
10319}
10320
10321// SetInclude sets the Include field's value.
10322func (s *DescribeClustersInput) SetInclude(v []*string) *DescribeClustersInput {
10323	s.Include = v
10324	return s
10325}
10326
10327type DescribeClustersOutput struct {
10328	_ struct{} `type:"structure"`
10329
10330	// The list of clusters.
10331	Clusters []*Cluster `locationName:"clusters" type:"list"`
10332
10333	// Any failures associated with the call.
10334	Failures []*Failure `locationName:"failures" type:"list"`
10335}
10336
10337// String returns the string representation
10338func (s DescribeClustersOutput) String() string {
10339	return awsutil.Prettify(s)
10340}
10341
10342// GoString returns the string representation
10343func (s DescribeClustersOutput) GoString() string {
10344	return s.String()
10345}
10346
10347// SetClusters sets the Clusters field's value.
10348func (s *DescribeClustersOutput) SetClusters(v []*Cluster) *DescribeClustersOutput {
10349	s.Clusters = v
10350	return s
10351}
10352
10353// SetFailures sets the Failures field's value.
10354func (s *DescribeClustersOutput) SetFailures(v []*Failure) *DescribeClustersOutput {
10355	s.Failures = v
10356	return s
10357}
10358
10359type DescribeContainerInstancesInput struct {
10360	_ struct{} `type:"structure"`
10361
10362	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
10363	// the container instances to describe. If you do not specify a cluster, the
10364	// default cluster is assumed. This parameter is required if the container instance
10365	// or container instances you are describing were launched in any cluster other
10366	// than the default cluster.
10367	Cluster *string `locationName:"cluster" type:"string"`
10368
10369	// A list of up to 100 container instance IDs or full Amazon Resource Name (ARN)
10370	// entries.
10371	//
10372	// ContainerInstances is a required field
10373	ContainerInstances []*string `locationName:"containerInstances" type:"list" required:"true"`
10374
10375	// Specifies whether you want to see the resource tags for the container instance.
10376	// If TAGS is specified, the tags are included in the response. If this field
10377	// is omitted, tags are not included in the response.
10378	Include []*string `locationName:"include" type:"list"`
10379}
10380
10381// String returns the string representation
10382func (s DescribeContainerInstancesInput) String() string {
10383	return awsutil.Prettify(s)
10384}
10385
10386// GoString returns the string representation
10387func (s DescribeContainerInstancesInput) GoString() string {
10388	return s.String()
10389}
10390
10391// Validate inspects the fields of the type to determine if they are valid.
10392func (s *DescribeContainerInstancesInput) Validate() error {
10393	invalidParams := request.ErrInvalidParams{Context: "DescribeContainerInstancesInput"}
10394	if s.ContainerInstances == nil {
10395		invalidParams.Add(request.NewErrParamRequired("ContainerInstances"))
10396	}
10397
10398	if invalidParams.Len() > 0 {
10399		return invalidParams
10400	}
10401	return nil
10402}
10403
10404// SetCluster sets the Cluster field's value.
10405func (s *DescribeContainerInstancesInput) SetCluster(v string) *DescribeContainerInstancesInput {
10406	s.Cluster = &v
10407	return s
10408}
10409
10410// SetContainerInstances sets the ContainerInstances field's value.
10411func (s *DescribeContainerInstancesInput) SetContainerInstances(v []*string) *DescribeContainerInstancesInput {
10412	s.ContainerInstances = v
10413	return s
10414}
10415
10416// SetInclude sets the Include field's value.
10417func (s *DescribeContainerInstancesInput) SetInclude(v []*string) *DescribeContainerInstancesInput {
10418	s.Include = v
10419	return s
10420}
10421
10422type DescribeContainerInstancesOutput struct {
10423	_ struct{} `type:"structure"`
10424
10425	// The list of container instances.
10426	ContainerInstances []*ContainerInstance `locationName:"containerInstances" type:"list"`
10427
10428	// Any failures associated with the call.
10429	Failures []*Failure `locationName:"failures" type:"list"`
10430}
10431
10432// String returns the string representation
10433func (s DescribeContainerInstancesOutput) String() string {
10434	return awsutil.Prettify(s)
10435}
10436
10437// GoString returns the string representation
10438func (s DescribeContainerInstancesOutput) GoString() string {
10439	return s.String()
10440}
10441
10442// SetContainerInstances sets the ContainerInstances field's value.
10443func (s *DescribeContainerInstancesOutput) SetContainerInstances(v []*ContainerInstance) *DescribeContainerInstancesOutput {
10444	s.ContainerInstances = v
10445	return s
10446}
10447
10448// SetFailures sets the Failures field's value.
10449func (s *DescribeContainerInstancesOutput) SetFailures(v []*Failure) *DescribeContainerInstancesOutput {
10450	s.Failures = v
10451	return s
10452}
10453
10454type DescribeServicesInput struct {
10455	_ struct{} `type:"structure"`
10456
10457	// The short name or full Amazon Resource Name (ARN)the cluster that hosts the
10458	// service to describe. If you do not specify a cluster, the default cluster
10459	// is assumed. This parameter is required if the service or services you are
10460	// describing were launched in any cluster other than the default cluster.
10461	Cluster *string `locationName:"cluster" type:"string"`
10462
10463	// Specifies whether you want to see the resource tags for the service. If TAGS
10464	// is specified, the tags are included in the response. If this field is omitted,
10465	// tags are not included in the response.
10466	Include []*string `locationName:"include" type:"list"`
10467
10468	// A list of services to describe. You may specify up to 10 services to describe
10469	// in a single operation.
10470	//
10471	// Services is a required field
10472	Services []*string `locationName:"services" type:"list" required:"true"`
10473}
10474
10475// String returns the string representation
10476func (s DescribeServicesInput) String() string {
10477	return awsutil.Prettify(s)
10478}
10479
10480// GoString returns the string representation
10481func (s DescribeServicesInput) GoString() string {
10482	return s.String()
10483}
10484
10485// Validate inspects the fields of the type to determine if they are valid.
10486func (s *DescribeServicesInput) Validate() error {
10487	invalidParams := request.ErrInvalidParams{Context: "DescribeServicesInput"}
10488	if s.Services == nil {
10489		invalidParams.Add(request.NewErrParamRequired("Services"))
10490	}
10491
10492	if invalidParams.Len() > 0 {
10493		return invalidParams
10494	}
10495	return nil
10496}
10497
10498// SetCluster sets the Cluster field's value.
10499func (s *DescribeServicesInput) SetCluster(v string) *DescribeServicesInput {
10500	s.Cluster = &v
10501	return s
10502}
10503
10504// SetInclude sets the Include field's value.
10505func (s *DescribeServicesInput) SetInclude(v []*string) *DescribeServicesInput {
10506	s.Include = v
10507	return s
10508}
10509
10510// SetServices sets the Services field's value.
10511func (s *DescribeServicesInput) SetServices(v []*string) *DescribeServicesInput {
10512	s.Services = v
10513	return s
10514}
10515
10516type DescribeServicesOutput struct {
10517	_ struct{} `type:"structure"`
10518
10519	// Any failures associated with the call.
10520	Failures []*Failure `locationName:"failures" type:"list"`
10521
10522	// The list of services described.
10523	Services []*Service `locationName:"services" type:"list"`
10524}
10525
10526// String returns the string representation
10527func (s DescribeServicesOutput) String() string {
10528	return awsutil.Prettify(s)
10529}
10530
10531// GoString returns the string representation
10532func (s DescribeServicesOutput) GoString() string {
10533	return s.String()
10534}
10535
10536// SetFailures sets the Failures field's value.
10537func (s *DescribeServicesOutput) SetFailures(v []*Failure) *DescribeServicesOutput {
10538	s.Failures = v
10539	return s
10540}
10541
10542// SetServices sets the Services field's value.
10543func (s *DescribeServicesOutput) SetServices(v []*Service) *DescribeServicesOutput {
10544	s.Services = v
10545	return s
10546}
10547
10548type DescribeTaskDefinitionInput struct {
10549	_ struct{} `type:"structure"`
10550
10551	// Specifies whether to see the resource tags for the task definition. If TAGS
10552	// is specified, the tags are included in the response. If this field is omitted,
10553	// tags are not included in the response.
10554	Include []*string `locationName:"include" type:"list"`
10555
10556	// The family for the latest ACTIVE revision, family and revision (family:revision)
10557	// for a specific revision in the family, or full Amazon Resource Name (ARN)
10558	// of the task definition to describe.
10559	//
10560	// TaskDefinition is a required field
10561	TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
10562}
10563
10564// String returns the string representation
10565func (s DescribeTaskDefinitionInput) String() string {
10566	return awsutil.Prettify(s)
10567}
10568
10569// GoString returns the string representation
10570func (s DescribeTaskDefinitionInput) GoString() string {
10571	return s.String()
10572}
10573
10574// Validate inspects the fields of the type to determine if they are valid.
10575func (s *DescribeTaskDefinitionInput) Validate() error {
10576	invalidParams := request.ErrInvalidParams{Context: "DescribeTaskDefinitionInput"}
10577	if s.TaskDefinition == nil {
10578		invalidParams.Add(request.NewErrParamRequired("TaskDefinition"))
10579	}
10580
10581	if invalidParams.Len() > 0 {
10582		return invalidParams
10583	}
10584	return nil
10585}
10586
10587// SetInclude sets the Include field's value.
10588func (s *DescribeTaskDefinitionInput) SetInclude(v []*string) *DescribeTaskDefinitionInput {
10589	s.Include = v
10590	return s
10591}
10592
10593// SetTaskDefinition sets the TaskDefinition field's value.
10594func (s *DescribeTaskDefinitionInput) SetTaskDefinition(v string) *DescribeTaskDefinitionInput {
10595	s.TaskDefinition = &v
10596	return s
10597}
10598
10599type DescribeTaskDefinitionOutput struct {
10600	_ struct{} `type:"structure"`
10601
10602	// The metadata that is applied to the task definition to help you categorize
10603	// and organize them. Each tag consists of a key and an optional value, both
10604	// of which you define.
10605	//
10606	// The following basic restrictions apply to tags:
10607	//
10608	//    * Maximum number of tags per resource - 50
10609	//
10610	//    * For each resource, each tag key must be unique, and each tag key can
10611	//    have only one value.
10612	//
10613	//    * Maximum key length - 128 Unicode characters in UTF-8
10614	//
10615	//    * Maximum value length - 256 Unicode characters in UTF-8
10616	//
10617	//    * If your tagging schema is used across multiple services and resources,
10618	//    remember that other services may have restrictions on allowed characters.
10619	//    Generally allowed characters are: letters, numbers, and spaces representable
10620	//    in UTF-8, and the following characters: + - = . _ : / @.
10621	//
10622	//    * Tag keys and values are case-sensitive.
10623	//
10624	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
10625	//    as a prefix for either keys or values as it is reserved for AWS use. You
10626	//    cannot edit or delete tag keys or values with this prefix. Tags with this
10627	//    prefix do not count against your tags per resource limit.
10628	Tags []*Tag `locationName:"tags" type:"list"`
10629
10630	// The full task definition description.
10631	TaskDefinition *TaskDefinition `locationName:"taskDefinition" type:"structure"`
10632}
10633
10634// String returns the string representation
10635func (s DescribeTaskDefinitionOutput) String() string {
10636	return awsutil.Prettify(s)
10637}
10638
10639// GoString returns the string representation
10640func (s DescribeTaskDefinitionOutput) GoString() string {
10641	return s.String()
10642}
10643
10644// SetTags sets the Tags field's value.
10645func (s *DescribeTaskDefinitionOutput) SetTags(v []*Tag) *DescribeTaskDefinitionOutput {
10646	s.Tags = v
10647	return s
10648}
10649
10650// SetTaskDefinition sets the TaskDefinition field's value.
10651func (s *DescribeTaskDefinitionOutput) SetTaskDefinition(v *TaskDefinition) *DescribeTaskDefinitionOutput {
10652	s.TaskDefinition = v
10653	return s
10654}
10655
10656type DescribeTaskSetsInput struct {
10657	_ struct{} `type:"structure"`
10658
10659	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
10660	// the service that the task sets exist in.
10661	//
10662	// Cluster is a required field
10663	Cluster *string `locationName:"cluster" type:"string" required:"true"`
10664
10665	// Specifies whether to see the resource tags for the task set. If TAGS is specified,
10666	// the tags are included in the response. If this field is omitted, tags are
10667	// not included in the response.
10668	Include []*string `locationName:"include" type:"list"`
10669
10670	// The short name or full Amazon Resource Name (ARN) of the service that the
10671	// task sets exist in.
10672	//
10673	// Service is a required field
10674	Service *string `locationName:"service" type:"string" required:"true"`
10675
10676	// The ID or full Amazon Resource Name (ARN) of task sets to describe.
10677	TaskSets []*string `locationName:"taskSets" type:"list"`
10678}
10679
10680// String returns the string representation
10681func (s DescribeTaskSetsInput) String() string {
10682	return awsutil.Prettify(s)
10683}
10684
10685// GoString returns the string representation
10686func (s DescribeTaskSetsInput) GoString() string {
10687	return s.String()
10688}
10689
10690// Validate inspects the fields of the type to determine if they are valid.
10691func (s *DescribeTaskSetsInput) Validate() error {
10692	invalidParams := request.ErrInvalidParams{Context: "DescribeTaskSetsInput"}
10693	if s.Cluster == nil {
10694		invalidParams.Add(request.NewErrParamRequired("Cluster"))
10695	}
10696	if s.Service == nil {
10697		invalidParams.Add(request.NewErrParamRequired("Service"))
10698	}
10699
10700	if invalidParams.Len() > 0 {
10701		return invalidParams
10702	}
10703	return nil
10704}
10705
10706// SetCluster sets the Cluster field's value.
10707func (s *DescribeTaskSetsInput) SetCluster(v string) *DescribeTaskSetsInput {
10708	s.Cluster = &v
10709	return s
10710}
10711
10712// SetInclude sets the Include field's value.
10713func (s *DescribeTaskSetsInput) SetInclude(v []*string) *DescribeTaskSetsInput {
10714	s.Include = v
10715	return s
10716}
10717
10718// SetService sets the Service field's value.
10719func (s *DescribeTaskSetsInput) SetService(v string) *DescribeTaskSetsInput {
10720	s.Service = &v
10721	return s
10722}
10723
10724// SetTaskSets sets the TaskSets field's value.
10725func (s *DescribeTaskSetsInput) SetTaskSets(v []*string) *DescribeTaskSetsInput {
10726	s.TaskSets = v
10727	return s
10728}
10729
10730type DescribeTaskSetsOutput struct {
10731	_ struct{} `type:"structure"`
10732
10733	// Any failures associated with the call.
10734	Failures []*Failure `locationName:"failures" type:"list"`
10735
10736	// The list of task sets described.
10737	TaskSets []*TaskSet `locationName:"taskSets" type:"list"`
10738}
10739
10740// String returns the string representation
10741func (s DescribeTaskSetsOutput) String() string {
10742	return awsutil.Prettify(s)
10743}
10744
10745// GoString returns the string representation
10746func (s DescribeTaskSetsOutput) GoString() string {
10747	return s.String()
10748}
10749
10750// SetFailures sets the Failures field's value.
10751func (s *DescribeTaskSetsOutput) SetFailures(v []*Failure) *DescribeTaskSetsOutput {
10752	s.Failures = v
10753	return s
10754}
10755
10756// SetTaskSets sets the TaskSets field's value.
10757func (s *DescribeTaskSetsOutput) SetTaskSets(v []*TaskSet) *DescribeTaskSetsOutput {
10758	s.TaskSets = v
10759	return s
10760}
10761
10762type DescribeTasksInput struct {
10763	_ struct{} `type:"structure"`
10764
10765	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
10766	// the task or tasks to describe. If you do not specify a cluster, the default
10767	// cluster is assumed. This parameter is required if the task or tasks you are
10768	// describing were launched in any cluster other than the default cluster.
10769	Cluster *string `locationName:"cluster" type:"string"`
10770
10771	// Specifies whether you want to see the resource tags for the task. If TAGS
10772	// is specified, the tags are included in the response. If this field is omitted,
10773	// tags are not included in the response.
10774	Include []*string `locationName:"include" type:"list"`
10775
10776	// A list of up to 100 task IDs or full ARN entries.
10777	//
10778	// Tasks is a required field
10779	Tasks []*string `locationName:"tasks" type:"list" required:"true"`
10780}
10781
10782// String returns the string representation
10783func (s DescribeTasksInput) String() string {
10784	return awsutil.Prettify(s)
10785}
10786
10787// GoString returns the string representation
10788func (s DescribeTasksInput) GoString() string {
10789	return s.String()
10790}
10791
10792// Validate inspects the fields of the type to determine if they are valid.
10793func (s *DescribeTasksInput) Validate() error {
10794	invalidParams := request.ErrInvalidParams{Context: "DescribeTasksInput"}
10795	if s.Tasks == nil {
10796		invalidParams.Add(request.NewErrParamRequired("Tasks"))
10797	}
10798
10799	if invalidParams.Len() > 0 {
10800		return invalidParams
10801	}
10802	return nil
10803}
10804
10805// SetCluster sets the Cluster field's value.
10806func (s *DescribeTasksInput) SetCluster(v string) *DescribeTasksInput {
10807	s.Cluster = &v
10808	return s
10809}
10810
10811// SetInclude sets the Include field's value.
10812func (s *DescribeTasksInput) SetInclude(v []*string) *DescribeTasksInput {
10813	s.Include = v
10814	return s
10815}
10816
10817// SetTasks sets the Tasks field's value.
10818func (s *DescribeTasksInput) SetTasks(v []*string) *DescribeTasksInput {
10819	s.Tasks = v
10820	return s
10821}
10822
10823type DescribeTasksOutput struct {
10824	_ struct{} `type:"structure"`
10825
10826	// Any failures associated with the call.
10827	Failures []*Failure `locationName:"failures" type:"list"`
10828
10829	// The list of tasks.
10830	Tasks []*Task `locationName:"tasks" type:"list"`
10831}
10832
10833// String returns the string representation
10834func (s DescribeTasksOutput) String() string {
10835	return awsutil.Prettify(s)
10836}
10837
10838// GoString returns the string representation
10839func (s DescribeTasksOutput) GoString() string {
10840	return s.String()
10841}
10842
10843// SetFailures sets the Failures field's value.
10844func (s *DescribeTasksOutput) SetFailures(v []*Failure) *DescribeTasksOutput {
10845	s.Failures = v
10846	return s
10847}
10848
10849// SetTasks sets the Tasks field's value.
10850func (s *DescribeTasksOutput) SetTasks(v []*Task) *DescribeTasksOutput {
10851	s.Tasks = v
10852	return s
10853}
10854
10855// An object representing a container instance host device.
10856type Device struct {
10857	_ struct{} `type:"structure"`
10858
10859	// The path inside the container at which to expose the host device.
10860	ContainerPath *string `locationName:"containerPath" type:"string"`
10861
10862	// The path for the device on the host container instance.
10863	//
10864	// HostPath is a required field
10865	HostPath *string `locationName:"hostPath" type:"string" required:"true"`
10866
10867	// The explicit permissions to provide to the container for the device. By default,
10868	// the container has permissions for read, write, and mknod for the device.
10869	Permissions []*string `locationName:"permissions" type:"list"`
10870}
10871
10872// String returns the string representation
10873func (s Device) String() string {
10874	return awsutil.Prettify(s)
10875}
10876
10877// GoString returns the string representation
10878func (s Device) GoString() string {
10879	return s.String()
10880}
10881
10882// Validate inspects the fields of the type to determine if they are valid.
10883func (s *Device) Validate() error {
10884	invalidParams := request.ErrInvalidParams{Context: "Device"}
10885	if s.HostPath == nil {
10886		invalidParams.Add(request.NewErrParamRequired("HostPath"))
10887	}
10888
10889	if invalidParams.Len() > 0 {
10890		return invalidParams
10891	}
10892	return nil
10893}
10894
10895// SetContainerPath sets the ContainerPath field's value.
10896func (s *Device) SetContainerPath(v string) *Device {
10897	s.ContainerPath = &v
10898	return s
10899}
10900
10901// SetHostPath sets the HostPath field's value.
10902func (s *Device) SetHostPath(v string) *Device {
10903	s.HostPath = &v
10904	return s
10905}
10906
10907// SetPermissions sets the Permissions field's value.
10908func (s *Device) SetPermissions(v []*string) *Device {
10909	s.Permissions = v
10910	return s
10911}
10912
10913type DiscoverPollEndpointInput struct {
10914	_ struct{} `type:"structure"`
10915
10916	// The short name or full Amazon Resource Name (ARN) of the cluster to which
10917	// the container instance belongs.
10918	Cluster *string `locationName:"cluster" type:"string"`
10919
10920	// The container instance ID or full ARN of the container instance. The ARN
10921	// contains the arn:aws:ecs namespace, followed by the Region of the container
10922	// instance, the AWS account ID of the container instance owner, the container-instance
10923	// namespace, and then the container instance ID. For example, arn:aws:ecs:region:aws_account_id:container-instance/container_instance_ID.
10924	ContainerInstance *string `locationName:"containerInstance" type:"string"`
10925}
10926
10927// String returns the string representation
10928func (s DiscoverPollEndpointInput) String() string {
10929	return awsutil.Prettify(s)
10930}
10931
10932// GoString returns the string representation
10933func (s DiscoverPollEndpointInput) GoString() string {
10934	return s.String()
10935}
10936
10937// SetCluster sets the Cluster field's value.
10938func (s *DiscoverPollEndpointInput) SetCluster(v string) *DiscoverPollEndpointInput {
10939	s.Cluster = &v
10940	return s
10941}
10942
10943// SetContainerInstance sets the ContainerInstance field's value.
10944func (s *DiscoverPollEndpointInput) SetContainerInstance(v string) *DiscoverPollEndpointInput {
10945	s.ContainerInstance = &v
10946	return s
10947}
10948
10949type DiscoverPollEndpointOutput struct {
10950	_ struct{} `type:"structure"`
10951
10952	// The endpoint for the Amazon ECS agent to poll.
10953	Endpoint *string `locationName:"endpoint" type:"string"`
10954
10955	// The telemetry endpoint for the Amazon ECS agent.
10956	TelemetryEndpoint *string `locationName:"telemetryEndpoint" type:"string"`
10957}
10958
10959// String returns the string representation
10960func (s DiscoverPollEndpointOutput) String() string {
10961	return awsutil.Prettify(s)
10962}
10963
10964// GoString returns the string representation
10965func (s DiscoverPollEndpointOutput) GoString() string {
10966	return s.String()
10967}
10968
10969// SetEndpoint sets the Endpoint field's value.
10970func (s *DiscoverPollEndpointOutput) SetEndpoint(v string) *DiscoverPollEndpointOutput {
10971	s.Endpoint = &v
10972	return s
10973}
10974
10975// SetTelemetryEndpoint sets the TelemetryEndpoint field's value.
10976func (s *DiscoverPollEndpointOutput) SetTelemetryEndpoint(v string) *DiscoverPollEndpointOutput {
10977	s.TelemetryEndpoint = &v
10978	return s
10979}
10980
10981// This parameter is specified when you are using Docker volumes. Docker volumes
10982// are only supported when you are using the EC2 launch type. Windows containers
10983// only support the use of the local driver. To use bind mounts, specify a host
10984// instead.
10985type DockerVolumeConfiguration struct {
10986	_ struct{} `type:"structure"`
10987
10988	// If this value is true, the Docker volume is created if it does not already
10989	// exist.
10990	//
10991	// This field is only used if the scope is shared.
10992	Autoprovision *bool `locationName:"autoprovision" type:"boolean"`
10993
10994	// The Docker volume driver to use. The driver value must match the driver name
10995	// provided by Docker because it is used for task placement. If the driver was
10996	// installed using the Docker plugin CLI, use docker plugin ls to retrieve the
10997	// driver name from your container instance. If the driver was installed using
10998	// another method, use Docker plugin discovery to retrieve the driver name.
10999	// For more information, see Docker plugin discovery (https://docs.docker.com/engine/extend/plugin_api/#plugin-discovery).
11000	// This parameter maps to Driver in the Create a volume (https://docs.docker.com/engine/api/v1.35/#operation/VolumeCreate)
11001	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11002	// and the xxdriver option to docker volume create (https://docs.docker.com/engine/reference/commandline/volume_create/).
11003	Driver *string `locationName:"driver" type:"string"`
11004
11005	// A map of Docker driver-specific options passed through. This parameter maps
11006	// to DriverOpts in the Create a volume (https://docs.docker.com/engine/api/v1.35/#operation/VolumeCreate)
11007	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11008	// and the xxopt option to docker volume create (https://docs.docker.com/engine/reference/commandline/volume_create/).
11009	DriverOpts map[string]*string `locationName:"driverOpts" type:"map"`
11010
11011	// Custom metadata to add to your Docker volume. This parameter maps to Labels
11012	// in the Create a volume (https://docs.docker.com/engine/api/v1.35/#operation/VolumeCreate)
11013	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11014	// and the xxlabel option to docker volume create (https://docs.docker.com/engine/reference/commandline/volume_create/).
11015	Labels map[string]*string `locationName:"labels" type:"map"`
11016
11017	// The scope for the Docker volume that determines its lifecycle. Docker volumes
11018	// that are scoped to a task are automatically provisioned when the task starts
11019	// and destroyed when the task stops. Docker volumes that are scoped as shared
11020	// persist after the task stops.
11021	Scope *string `locationName:"scope" type:"string" enum:"Scope"`
11022}
11023
11024// String returns the string representation
11025func (s DockerVolumeConfiguration) String() string {
11026	return awsutil.Prettify(s)
11027}
11028
11029// GoString returns the string representation
11030func (s DockerVolumeConfiguration) GoString() string {
11031	return s.String()
11032}
11033
11034// SetAutoprovision sets the Autoprovision field's value.
11035func (s *DockerVolumeConfiguration) SetAutoprovision(v bool) *DockerVolumeConfiguration {
11036	s.Autoprovision = &v
11037	return s
11038}
11039
11040// SetDriver sets the Driver field's value.
11041func (s *DockerVolumeConfiguration) SetDriver(v string) *DockerVolumeConfiguration {
11042	s.Driver = &v
11043	return s
11044}
11045
11046// SetDriverOpts sets the DriverOpts field's value.
11047func (s *DockerVolumeConfiguration) SetDriverOpts(v map[string]*string) *DockerVolumeConfiguration {
11048	s.DriverOpts = v
11049	return s
11050}
11051
11052// SetLabels sets the Labels field's value.
11053func (s *DockerVolumeConfiguration) SetLabels(v map[string]*string) *DockerVolumeConfiguration {
11054	s.Labels = v
11055	return s
11056}
11057
11058// SetScope sets the Scope field's value.
11059func (s *DockerVolumeConfiguration) SetScope(v string) *DockerVolumeConfiguration {
11060	s.Scope = &v
11061	return s
11062}
11063
11064// This parameter is specified when you are using an Amazon Elastic File System
11065// (Amazon EFS) file storage. Amazon EFS file systems are only supported when
11066// you are using the EC2 launch type.
11067//
11068// EFSVolumeConfiguration remains in preview and is a Beta Service as defined
11069// by and subject to the Beta Service Participation Service Terms located at
11070// https://aws.amazon.com/service-terms (https://aws.amazon.com/service-terms)
11071// ("Beta Terms"). These Beta Terms apply to your participation in this preview
11072// of EFSVolumeConfiguration.
11073type EFSVolumeConfiguration struct {
11074	_ struct{} `type:"structure"`
11075
11076	// The Amazon EFS file system ID to use.
11077	//
11078	// FileSystemId is a required field
11079	FileSystemId *string `locationName:"fileSystemId" type:"string" required:"true"`
11080
11081	// The directory within the Amazon EFS file system to mount as the root directory
11082	// inside the host.
11083	RootDirectory *string `locationName:"rootDirectory" type:"string"`
11084}
11085
11086// String returns the string representation
11087func (s EFSVolumeConfiguration) String() string {
11088	return awsutil.Prettify(s)
11089}
11090
11091// GoString returns the string representation
11092func (s EFSVolumeConfiguration) GoString() string {
11093	return s.String()
11094}
11095
11096// Validate inspects the fields of the type to determine if they are valid.
11097func (s *EFSVolumeConfiguration) Validate() error {
11098	invalidParams := request.ErrInvalidParams{Context: "EFSVolumeConfiguration"}
11099	if s.FileSystemId == nil {
11100		invalidParams.Add(request.NewErrParamRequired("FileSystemId"))
11101	}
11102
11103	if invalidParams.Len() > 0 {
11104		return invalidParams
11105	}
11106	return nil
11107}
11108
11109// SetFileSystemId sets the FileSystemId field's value.
11110func (s *EFSVolumeConfiguration) SetFileSystemId(v string) *EFSVolumeConfiguration {
11111	s.FileSystemId = &v
11112	return s
11113}
11114
11115// SetRootDirectory sets the RootDirectory field's value.
11116func (s *EFSVolumeConfiguration) SetRootDirectory(v string) *EFSVolumeConfiguration {
11117	s.RootDirectory = &v
11118	return s
11119}
11120
11121// A failed resource.
11122type Failure struct {
11123	_ struct{} `type:"structure"`
11124
11125	// The Amazon Resource Name (ARN) of the failed resource.
11126	Arn *string `locationName:"arn" type:"string"`
11127
11128	// The details of the failure.
11129	Detail *string `locationName:"detail" type:"string"`
11130
11131	// The reason for the failure.
11132	Reason *string `locationName:"reason" type:"string"`
11133}
11134
11135// String returns the string representation
11136func (s Failure) String() string {
11137	return awsutil.Prettify(s)
11138}
11139
11140// GoString returns the string representation
11141func (s Failure) GoString() string {
11142	return s.String()
11143}
11144
11145// SetArn sets the Arn field's value.
11146func (s *Failure) SetArn(v string) *Failure {
11147	s.Arn = &v
11148	return s
11149}
11150
11151// SetDetail sets the Detail field's value.
11152func (s *Failure) SetDetail(v string) *Failure {
11153	s.Detail = &v
11154	return s
11155}
11156
11157// SetReason sets the Reason field's value.
11158func (s *Failure) SetReason(v string) *Failure {
11159	s.Reason = &v
11160	return s
11161}
11162
11163// The FireLens configuration for the container. This is used to specify and
11164// configure a log router for container logs. For more information, see Custom
11165// Log Routing (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html)
11166// in the Amazon Elastic Container Service Developer Guide.
11167type FirelensConfiguration struct {
11168	_ struct{} `type:"structure"`
11169
11170	// The options to use when configuring the log router. This field is optional
11171	// and can be used to specify a custom configuration file or to add additional
11172	// metadata, such as the task, task definition, cluster, and container instance
11173	// details to the log event. If specified, the syntax to use is "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"}.
11174	// For more information, see Creating a Task Definition that Uses a FireLens
11175	// Configuration (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-taskdef)
11176	// in the Amazon Elastic Container Service Developer Guide.
11177	Options map[string]*string `locationName:"options" type:"map"`
11178
11179	// The log router to use. The valid values are fluentd or fluentbit.
11180	//
11181	// Type is a required field
11182	Type *string `locationName:"type" type:"string" required:"true" enum:"FirelensConfigurationType"`
11183}
11184
11185// String returns the string representation
11186func (s FirelensConfiguration) String() string {
11187	return awsutil.Prettify(s)
11188}
11189
11190// GoString returns the string representation
11191func (s FirelensConfiguration) GoString() string {
11192	return s.String()
11193}
11194
11195// Validate inspects the fields of the type to determine if they are valid.
11196func (s *FirelensConfiguration) Validate() error {
11197	invalidParams := request.ErrInvalidParams{Context: "FirelensConfiguration"}
11198	if s.Type == nil {
11199		invalidParams.Add(request.NewErrParamRequired("Type"))
11200	}
11201
11202	if invalidParams.Len() > 0 {
11203		return invalidParams
11204	}
11205	return nil
11206}
11207
11208// SetOptions sets the Options field's value.
11209func (s *FirelensConfiguration) SetOptions(v map[string]*string) *FirelensConfiguration {
11210	s.Options = v
11211	return s
11212}
11213
11214// SetType sets the Type field's value.
11215func (s *FirelensConfiguration) SetType(v string) *FirelensConfiguration {
11216	s.Type = &v
11217	return s
11218}
11219
11220// An object representing a container health check. Health check parameters
11221// that are specified in a container definition override any Docker health checks
11222// that exist in the container image (such as those specified in a parent image
11223// or from the image's Dockerfile).
11224//
11225// The following are notes about container health check support:
11226//
11227//    * Container health checks require version 1.17.0 or greater of the Amazon
11228//    ECS container agent. For more information, see Updating the Amazon ECS
11229//    Container Agent (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html).
11230//
11231//    * Container health checks are supported for Fargate tasks if you are using
11232//    platform version 1.1.0 or greater. For more information, see AWS Fargate
11233//    Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).
11234//
11235//    * Container health checks are not supported for tasks that are part of
11236//    a service that is configured to use a Classic Load Balancer.
11237type HealthCheck struct {
11238	_ struct{} `type:"structure"`
11239
11240	// A string array representing the command that the container runs to determine
11241	// if it is healthy. The string array must start with CMD to execute the command
11242	// arguments directly, or CMD-SHELL to run the command with the container's
11243	// default shell. For example:
11244	//
11245	// [ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
11246	//
11247	// An exit code of 0 indicates success, and non-zero exit code indicates failure.
11248	// For more information, see HealthCheck in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
11249	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/).
11250	//
11251	// Command is a required field
11252	Command []*string `locationName:"command" type:"list" required:"true"`
11253
11254	// The time period in seconds between each health check execution. You may specify
11255	// between 5 and 300 seconds. The default value is 30 seconds.
11256	Interval *int64 `locationName:"interval" type:"integer"`
11257
11258	// The number of times to retry a failed health check before the container is
11259	// considered unhealthy. You may specify between 1 and 10 retries. The default
11260	// value is 3.
11261	Retries *int64 `locationName:"retries" type:"integer"`
11262
11263	// The optional grace period within which to provide containers time to bootstrap
11264	// before failed health checks count towards the maximum number of retries.
11265	// You may specify between 0 and 300 seconds. The startPeriod is disabled by
11266	// default.
11267	//
11268	// If a health check succeeds within the startPeriod, then the container is
11269	// considered healthy and any subsequent failures count toward the maximum number
11270	// of retries.
11271	StartPeriod *int64 `locationName:"startPeriod" type:"integer"`
11272
11273	// The time period in seconds to wait for a health check to succeed before it
11274	// is considered a failure. You may specify between 2 and 60 seconds. The default
11275	// value is 5.
11276	Timeout *int64 `locationName:"timeout" type:"integer"`
11277}
11278
11279// String returns the string representation
11280func (s HealthCheck) String() string {
11281	return awsutil.Prettify(s)
11282}
11283
11284// GoString returns the string representation
11285func (s HealthCheck) GoString() string {
11286	return s.String()
11287}
11288
11289// Validate inspects the fields of the type to determine if they are valid.
11290func (s *HealthCheck) Validate() error {
11291	invalidParams := request.ErrInvalidParams{Context: "HealthCheck"}
11292	if s.Command == nil {
11293		invalidParams.Add(request.NewErrParamRequired("Command"))
11294	}
11295
11296	if invalidParams.Len() > 0 {
11297		return invalidParams
11298	}
11299	return nil
11300}
11301
11302// SetCommand sets the Command field's value.
11303func (s *HealthCheck) SetCommand(v []*string) *HealthCheck {
11304	s.Command = v
11305	return s
11306}
11307
11308// SetInterval sets the Interval field's value.
11309func (s *HealthCheck) SetInterval(v int64) *HealthCheck {
11310	s.Interval = &v
11311	return s
11312}
11313
11314// SetRetries sets the Retries field's value.
11315func (s *HealthCheck) SetRetries(v int64) *HealthCheck {
11316	s.Retries = &v
11317	return s
11318}
11319
11320// SetStartPeriod sets the StartPeriod field's value.
11321func (s *HealthCheck) SetStartPeriod(v int64) *HealthCheck {
11322	s.StartPeriod = &v
11323	return s
11324}
11325
11326// SetTimeout sets the Timeout field's value.
11327func (s *HealthCheck) SetTimeout(v int64) *HealthCheck {
11328	s.Timeout = &v
11329	return s
11330}
11331
11332// Hostnames and IP address entries that are added to the /etc/hosts file of
11333// a container via the extraHosts parameter of its ContainerDefinition.
11334type HostEntry struct {
11335	_ struct{} `type:"structure"`
11336
11337	// The hostname to use in the /etc/hosts entry.
11338	//
11339	// Hostname is a required field
11340	Hostname *string `locationName:"hostname" type:"string" required:"true"`
11341
11342	// The IP address to use in the /etc/hosts entry.
11343	//
11344	// IpAddress is a required field
11345	IpAddress *string `locationName:"ipAddress" type:"string" required:"true"`
11346}
11347
11348// String returns the string representation
11349func (s HostEntry) String() string {
11350	return awsutil.Prettify(s)
11351}
11352
11353// GoString returns the string representation
11354func (s HostEntry) GoString() string {
11355	return s.String()
11356}
11357
11358// Validate inspects the fields of the type to determine if they are valid.
11359func (s *HostEntry) Validate() error {
11360	invalidParams := request.ErrInvalidParams{Context: "HostEntry"}
11361	if s.Hostname == nil {
11362		invalidParams.Add(request.NewErrParamRequired("Hostname"))
11363	}
11364	if s.IpAddress == nil {
11365		invalidParams.Add(request.NewErrParamRequired("IpAddress"))
11366	}
11367
11368	if invalidParams.Len() > 0 {
11369		return invalidParams
11370	}
11371	return nil
11372}
11373
11374// SetHostname sets the Hostname field's value.
11375func (s *HostEntry) SetHostname(v string) *HostEntry {
11376	s.Hostname = &v
11377	return s
11378}
11379
11380// SetIpAddress sets the IpAddress field's value.
11381func (s *HostEntry) SetIpAddress(v string) *HostEntry {
11382	s.IpAddress = &v
11383	return s
11384}
11385
11386// Details on a container instance bind mount host volume.
11387type HostVolumeProperties struct {
11388	_ struct{} `type:"structure"`
11389
11390	// When the host parameter is used, specify a sourcePath to declare the path
11391	// on the host container instance that is presented to the container. If this
11392	// parameter is empty, then the Docker daemon has assigned a host path for you.
11393	// If the host parameter contains a sourcePath file location, then the data
11394	// volume persists at the specified location on the host container instance
11395	// until you delete it manually. If the sourcePath value does not exist on the
11396	// host container instance, the Docker daemon creates it. If the location does
11397	// exist, the contents of the source path folder are exported.
11398	//
11399	// If you are using the Fargate launch type, the sourcePath parameter is not
11400	// supported.
11401	SourcePath *string `locationName:"sourcePath" type:"string"`
11402}
11403
11404// String returns the string representation
11405func (s HostVolumeProperties) String() string {
11406	return awsutil.Prettify(s)
11407}
11408
11409// GoString returns the string representation
11410func (s HostVolumeProperties) GoString() string {
11411	return s.String()
11412}
11413
11414// SetSourcePath sets the SourcePath field's value.
11415func (s *HostVolumeProperties) SetSourcePath(v string) *HostVolumeProperties {
11416	s.SourcePath = &v
11417	return s
11418}
11419
11420// Details on a Elastic Inference accelerator. For more information, see Working
11421// with Amazon Elastic Inference on Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-eia.html)
11422// in the Amazon Elastic Container Service Developer Guide.
11423type InferenceAccelerator struct {
11424	_ struct{} `type:"structure"`
11425
11426	// The Elastic Inference accelerator device name. The deviceName must also be
11427	// referenced in a container definition as a ResourceRequirement.
11428	//
11429	// DeviceName is a required field
11430	DeviceName *string `locationName:"deviceName" type:"string" required:"true"`
11431
11432	// The Elastic Inference accelerator type to use.
11433	//
11434	// DeviceType is a required field
11435	DeviceType *string `locationName:"deviceType" type:"string" required:"true"`
11436}
11437
11438// String returns the string representation
11439func (s InferenceAccelerator) String() string {
11440	return awsutil.Prettify(s)
11441}
11442
11443// GoString returns the string representation
11444func (s InferenceAccelerator) GoString() string {
11445	return s.String()
11446}
11447
11448// Validate inspects the fields of the type to determine if they are valid.
11449func (s *InferenceAccelerator) Validate() error {
11450	invalidParams := request.ErrInvalidParams{Context: "InferenceAccelerator"}
11451	if s.DeviceName == nil {
11452		invalidParams.Add(request.NewErrParamRequired("DeviceName"))
11453	}
11454	if s.DeviceType == nil {
11455		invalidParams.Add(request.NewErrParamRequired("DeviceType"))
11456	}
11457
11458	if invalidParams.Len() > 0 {
11459		return invalidParams
11460	}
11461	return nil
11462}
11463
11464// SetDeviceName sets the DeviceName field's value.
11465func (s *InferenceAccelerator) SetDeviceName(v string) *InferenceAccelerator {
11466	s.DeviceName = &v
11467	return s
11468}
11469
11470// SetDeviceType sets the DeviceType field's value.
11471func (s *InferenceAccelerator) SetDeviceType(v string) *InferenceAccelerator {
11472	s.DeviceType = &v
11473	return s
11474}
11475
11476// Details on an Elastic Inference accelerator task override. This parameter
11477// is used to override the Elastic Inference accelerator specified in the task
11478// definition. For more information, see Working with Amazon Elastic Inference
11479// on Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-eia.html)
11480// in the Amazon Elastic Container Service Developer Guide.
11481type InferenceAcceleratorOverride struct {
11482	_ struct{} `type:"structure"`
11483
11484	// The Elastic Inference accelerator device name to override for the task. This
11485	// parameter must match a deviceName specified in the task definition.
11486	DeviceName *string `locationName:"deviceName" type:"string"`
11487
11488	// The Elastic Inference accelerator type to use.
11489	DeviceType *string `locationName:"deviceType" type:"string"`
11490}
11491
11492// String returns the string representation
11493func (s InferenceAcceleratorOverride) String() string {
11494	return awsutil.Prettify(s)
11495}
11496
11497// GoString returns the string representation
11498func (s InferenceAcceleratorOverride) GoString() string {
11499	return s.String()
11500}
11501
11502// SetDeviceName sets the DeviceName field's value.
11503func (s *InferenceAcceleratorOverride) SetDeviceName(v string) *InferenceAcceleratorOverride {
11504	s.DeviceName = &v
11505	return s
11506}
11507
11508// SetDeviceType sets the DeviceType field's value.
11509func (s *InferenceAcceleratorOverride) SetDeviceType(v string) *InferenceAcceleratorOverride {
11510	s.DeviceType = &v
11511	return s
11512}
11513
11514// The specified parameter is invalid. Review the available parameters for the
11515// API request.
11516type InvalidParameterException struct {
11517	_            struct{} `type:"structure"`
11518	respMetadata protocol.ResponseMetadata
11519
11520	Message_ *string `locationName:"message" type:"string"`
11521}
11522
11523// String returns the string representation
11524func (s InvalidParameterException) String() string {
11525	return awsutil.Prettify(s)
11526}
11527
11528// GoString returns the string representation
11529func (s InvalidParameterException) GoString() string {
11530	return s.String()
11531}
11532
11533func newErrorInvalidParameterException(v protocol.ResponseMetadata) error {
11534	return &InvalidParameterException{
11535		respMetadata: v,
11536	}
11537}
11538
11539// Code returns the exception type name.
11540func (s InvalidParameterException) Code() string {
11541	return "InvalidParameterException"
11542}
11543
11544// Message returns the exception's message.
11545func (s InvalidParameterException) Message() string {
11546	if s.Message_ != nil {
11547		return *s.Message_
11548	}
11549	return ""
11550}
11551
11552// OrigErr always returns nil, satisfies awserr.Error interface.
11553func (s InvalidParameterException) OrigErr() error {
11554	return nil
11555}
11556
11557func (s InvalidParameterException) Error() string {
11558	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11559}
11560
11561// Status code returns the HTTP status code for the request's response error.
11562func (s InvalidParameterException) StatusCode() int {
11563	return s.respMetadata.StatusCode
11564}
11565
11566// RequestID returns the service's response RequestID for request.
11567func (s InvalidParameterException) RequestID() string {
11568	return s.respMetadata.RequestID
11569}
11570
11571// The Linux capabilities for the container that are added to or dropped from
11572// the default configuration provided by Docker. For more information on the
11573// default capabilities and the non-default available capabilities, see Runtime
11574// privilege and Linux capabilities (https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)
11575// in the Docker run reference. For more detailed information on these Linux
11576// capabilities, see the capabilities(7) (http://man7.org/linux/man-pages/man7/capabilities.7.html)
11577// Linux manual page.
11578type KernelCapabilities struct {
11579	_ struct{} `type:"structure"`
11580
11581	// The Linux capabilities for the container that have been added to the default
11582	// configuration provided by Docker. This parameter maps to CapAdd in the Create
11583	// a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
11584	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11585	// and the --cap-add option to docker run (https://docs.docker.com/engine/reference/run/).
11586	//
11587	// If you are using tasks that use the Fargate launch type, the add parameter
11588	// is not supported.
11589	//
11590	// Valid values: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" |
11591	// "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK"
11592	// | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE"
11593	// | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW"
11594	// | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT"
11595	// | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" |
11596	// "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
11597	// "WAKE_ALARM"
11598	Add []*string `locationName:"add" type:"list"`
11599
11600	// The Linux capabilities for the container that have been removed from the
11601	// default configuration provided by Docker. This parameter maps to CapDrop
11602	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
11603	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11604	// and the --cap-drop option to docker run (https://docs.docker.com/engine/reference/run/).
11605	//
11606	// Valid values: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" |
11607	// "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK"
11608	// | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE"
11609	// | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW"
11610	// | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT"
11611	// | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" |
11612	// "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" |
11613	// "WAKE_ALARM"
11614	Drop []*string `locationName:"drop" type:"list"`
11615}
11616
11617// String returns the string representation
11618func (s KernelCapabilities) String() string {
11619	return awsutil.Prettify(s)
11620}
11621
11622// GoString returns the string representation
11623func (s KernelCapabilities) GoString() string {
11624	return s.String()
11625}
11626
11627// SetAdd sets the Add field's value.
11628func (s *KernelCapabilities) SetAdd(v []*string) *KernelCapabilities {
11629	s.Add = v
11630	return s
11631}
11632
11633// SetDrop sets the Drop field's value.
11634func (s *KernelCapabilities) SetDrop(v []*string) *KernelCapabilities {
11635	s.Drop = v
11636	return s
11637}
11638
11639// A key-value pair object.
11640type KeyValuePair struct {
11641	_ struct{} `type:"structure"`
11642
11643	// The name of the key-value pair. For environment variables, this is the name
11644	// of the environment variable.
11645	Name *string `locationName:"name" type:"string"`
11646
11647	// The value of the key-value pair. For environment variables, this is the value
11648	// of the environment variable.
11649	Value *string `locationName:"value" type:"string"`
11650}
11651
11652// String returns the string representation
11653func (s KeyValuePair) String() string {
11654	return awsutil.Prettify(s)
11655}
11656
11657// GoString returns the string representation
11658func (s KeyValuePair) GoString() string {
11659	return s.String()
11660}
11661
11662// SetName sets the Name field's value.
11663func (s *KeyValuePair) SetName(v string) *KeyValuePair {
11664	s.Name = &v
11665	return s
11666}
11667
11668// SetValue sets the Value field's value.
11669func (s *KeyValuePair) SetValue(v string) *KeyValuePair {
11670	s.Value = &v
11671	return s
11672}
11673
11674// The limit for the resource has been exceeded.
11675type LimitExceededException struct {
11676	_            struct{} `type:"structure"`
11677	respMetadata protocol.ResponseMetadata
11678
11679	Message_ *string `locationName:"message" type:"string"`
11680}
11681
11682// String returns the string representation
11683func (s LimitExceededException) String() string {
11684	return awsutil.Prettify(s)
11685}
11686
11687// GoString returns the string representation
11688func (s LimitExceededException) GoString() string {
11689	return s.String()
11690}
11691
11692func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
11693	return &LimitExceededException{
11694		respMetadata: v,
11695	}
11696}
11697
11698// Code returns the exception type name.
11699func (s LimitExceededException) Code() string {
11700	return "LimitExceededException"
11701}
11702
11703// Message returns the exception's message.
11704func (s LimitExceededException) Message() string {
11705	if s.Message_ != nil {
11706		return *s.Message_
11707	}
11708	return ""
11709}
11710
11711// OrigErr always returns nil, satisfies awserr.Error interface.
11712func (s LimitExceededException) OrigErr() error {
11713	return nil
11714}
11715
11716func (s LimitExceededException) Error() string {
11717	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
11718}
11719
11720// Status code returns the HTTP status code for the request's response error.
11721func (s LimitExceededException) StatusCode() int {
11722	return s.respMetadata.StatusCode
11723}
11724
11725// RequestID returns the service's response RequestID for request.
11726func (s LimitExceededException) RequestID() string {
11727	return s.respMetadata.RequestID
11728}
11729
11730// Linux-specific options that are applied to the container, such as Linux KernelCapabilities.
11731type LinuxParameters struct {
11732	_ struct{} `type:"structure"`
11733
11734	// The Linux capabilities for the container that are added to or dropped from
11735	// the default configuration provided by Docker.
11736	//
11737	// If you are using tasks that use the Fargate launch type, capabilities is
11738	// supported but the add parameter is not supported.
11739	Capabilities *KernelCapabilities `locationName:"capabilities" type:"structure"`
11740
11741	// Any host devices to expose to the container. This parameter maps to Devices
11742	// in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
11743	// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
11744	// and the --device option to docker run (https://docs.docker.com/engine/reference/run/).
11745	//
11746	// If you are using tasks that use the Fargate launch type, the devices parameter
11747	// is not supported.
11748	Devices []*Device `locationName:"devices" type:"list"`
11749
11750	// Run an init process inside the container that forwards signals and reaps
11751	// processes. This parameter maps to the --init option to docker run (https://docs.docker.com/engine/reference/run/).
11752	// This parameter requires version 1.25 of the Docker Remote API or greater
11753	// on your container instance. To check the Docker Remote API version on your
11754	// container instance, log in to your container instance and run the following
11755	// command: sudo docker version --format '{{.Server.APIVersion}}'
11756	InitProcessEnabled *bool `locationName:"initProcessEnabled" type:"boolean"`
11757
11758	// The total amount of swap memory (in MiB) a container can use. This parameter
11759	// will be translated to the --memory-swap option to docker run (https://docs.docker.com/engine/reference/run/)
11760	// where the value would be the sum of the container memory plus the maxSwap
11761	// value.
11762	//
11763	// If a maxSwap value of 0 is specified, the container will not use swap. Accepted
11764	// values are 0 or any positive integer. If the maxSwap parameter is omitted,
11765	// the container will use the swap configuration for the container instance
11766	// it is running on. A maxSwap value must be set for the swappiness parameter
11767	// to be used.
11768	//
11769	// If you are using tasks that use the Fargate launch type, the maxSwap parameter
11770	// is not supported.
11771	MaxSwap *int64 `locationName:"maxSwap" type:"integer"`
11772
11773	// The value for the size (in MiB) of the /dev/shm volume. This parameter maps
11774	// to the --shm-size option to docker run (https://docs.docker.com/engine/reference/run/).
11775	//
11776	// If you are using tasks that use the Fargate launch type, the sharedMemorySize
11777	// parameter is not supported.
11778	SharedMemorySize *int64 `locationName:"sharedMemorySize" type:"integer"`
11779
11780	// This allows you to tune a container's memory swappiness behavior. A swappiness
11781	// value of 0 will cause swapping to not happen unless absolutely necessary.
11782	// A swappiness value of 100 will cause pages to be swapped very aggressively.
11783	// Accepted values are whole numbers between 0 and 100. If the swappiness parameter
11784	// is not specified, a default value of 60 is used. If a value is not specified
11785	// for maxSwap then this parameter is ignored. This parameter maps to the --memory-swappiness
11786	// option to docker run (https://docs.docker.com/engine/reference/run/).
11787	//
11788	// If you are using tasks that use the Fargate launch type, the swappiness parameter
11789	// is not supported.
11790	Swappiness *int64 `locationName:"swappiness" type:"integer"`
11791
11792	// The container path, mount options, and size (in MiB) of the tmpfs mount.
11793	// This parameter maps to the --tmpfs option to docker run (https://docs.docker.com/engine/reference/run/).
11794	//
11795	// If you are using tasks that use the Fargate launch type, the tmpfs parameter
11796	// is not supported.
11797	Tmpfs []*Tmpfs `locationName:"tmpfs" type:"list"`
11798}
11799
11800// String returns the string representation
11801func (s LinuxParameters) String() string {
11802	return awsutil.Prettify(s)
11803}
11804
11805// GoString returns the string representation
11806func (s LinuxParameters) GoString() string {
11807	return s.String()
11808}
11809
11810// Validate inspects the fields of the type to determine if they are valid.
11811func (s *LinuxParameters) Validate() error {
11812	invalidParams := request.ErrInvalidParams{Context: "LinuxParameters"}
11813	if s.Devices != nil {
11814		for i, v := range s.Devices {
11815			if v == nil {
11816				continue
11817			}
11818			if err := v.Validate(); err != nil {
11819				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Devices", i), err.(request.ErrInvalidParams))
11820			}
11821		}
11822	}
11823	if s.Tmpfs != nil {
11824		for i, v := range s.Tmpfs {
11825			if v == nil {
11826				continue
11827			}
11828			if err := v.Validate(); err != nil {
11829				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tmpfs", i), err.(request.ErrInvalidParams))
11830			}
11831		}
11832	}
11833
11834	if invalidParams.Len() > 0 {
11835		return invalidParams
11836	}
11837	return nil
11838}
11839
11840// SetCapabilities sets the Capabilities field's value.
11841func (s *LinuxParameters) SetCapabilities(v *KernelCapabilities) *LinuxParameters {
11842	s.Capabilities = v
11843	return s
11844}
11845
11846// SetDevices sets the Devices field's value.
11847func (s *LinuxParameters) SetDevices(v []*Device) *LinuxParameters {
11848	s.Devices = v
11849	return s
11850}
11851
11852// SetInitProcessEnabled sets the InitProcessEnabled field's value.
11853func (s *LinuxParameters) SetInitProcessEnabled(v bool) *LinuxParameters {
11854	s.InitProcessEnabled = &v
11855	return s
11856}
11857
11858// SetMaxSwap sets the MaxSwap field's value.
11859func (s *LinuxParameters) SetMaxSwap(v int64) *LinuxParameters {
11860	s.MaxSwap = &v
11861	return s
11862}
11863
11864// SetSharedMemorySize sets the SharedMemorySize field's value.
11865func (s *LinuxParameters) SetSharedMemorySize(v int64) *LinuxParameters {
11866	s.SharedMemorySize = &v
11867	return s
11868}
11869
11870// SetSwappiness sets the Swappiness field's value.
11871func (s *LinuxParameters) SetSwappiness(v int64) *LinuxParameters {
11872	s.Swappiness = &v
11873	return s
11874}
11875
11876// SetTmpfs sets the Tmpfs field's value.
11877func (s *LinuxParameters) SetTmpfs(v []*Tmpfs) *LinuxParameters {
11878	s.Tmpfs = v
11879	return s
11880}
11881
11882type ListAccountSettingsInput struct {
11883	_ struct{} `type:"structure"`
11884
11885	// Specifies whether to return the effective settings. If true, the account
11886	// settings for the root user or the default setting for the principalArn are
11887	// returned. If false, the account settings for the principalArn are returned
11888	// if they are set. Otherwise, no account settings are returned.
11889	EffectiveSettings *bool `locationName:"effectiveSettings" type:"boolean"`
11890
11891	// The maximum number of account setting results returned by ListAccountSettings
11892	// in paginated output. When this parameter is used, ListAccountSettings only
11893	// returns maxResults results in a single page along with a nextToken response
11894	// element. The remaining results of the initial request can be seen by sending
11895	// another ListAccountSettings request with the returned nextToken value. This
11896	// value can be between 1 and 10. If this parameter is not used, then ListAccountSettings
11897	// returns up to 10 results and a nextToken value if applicable.
11898	MaxResults *int64 `locationName:"maxResults" type:"integer"`
11899
11900	// The resource name you want to list the account settings for.
11901	Name *string `locationName:"name" type:"string" enum:"SettingName"`
11902
11903	// The nextToken value returned from a ListAccountSettings request indicating
11904	// that more results are available to fulfill the request and further calls
11905	// will be needed. If maxResults was provided, it is possible the number of
11906	// results to be fewer than maxResults.
11907	//
11908	// This token should be treated as an opaque identifier that is only used to
11909	// retrieve the next items in a list and not for other programmatic purposes.
11910	NextToken *string `locationName:"nextToken" type:"string"`
11911
11912	// The ARN of the principal, which can be an IAM user, IAM role, or the root
11913	// user. If this field is omitted, the account settings are listed only for
11914	// the authenticated user.
11915	PrincipalArn *string `locationName:"principalArn" type:"string"`
11916
11917	// The value of the account settings with which to filter results. You must
11918	// also specify an account setting name to use this parameter.
11919	Value *string `locationName:"value" type:"string"`
11920}
11921
11922// String returns the string representation
11923func (s ListAccountSettingsInput) String() string {
11924	return awsutil.Prettify(s)
11925}
11926
11927// GoString returns the string representation
11928func (s ListAccountSettingsInput) GoString() string {
11929	return s.String()
11930}
11931
11932// SetEffectiveSettings sets the EffectiveSettings field's value.
11933func (s *ListAccountSettingsInput) SetEffectiveSettings(v bool) *ListAccountSettingsInput {
11934	s.EffectiveSettings = &v
11935	return s
11936}
11937
11938// SetMaxResults sets the MaxResults field's value.
11939func (s *ListAccountSettingsInput) SetMaxResults(v int64) *ListAccountSettingsInput {
11940	s.MaxResults = &v
11941	return s
11942}
11943
11944// SetName sets the Name field's value.
11945func (s *ListAccountSettingsInput) SetName(v string) *ListAccountSettingsInput {
11946	s.Name = &v
11947	return s
11948}
11949
11950// SetNextToken sets the NextToken field's value.
11951func (s *ListAccountSettingsInput) SetNextToken(v string) *ListAccountSettingsInput {
11952	s.NextToken = &v
11953	return s
11954}
11955
11956// SetPrincipalArn sets the PrincipalArn field's value.
11957func (s *ListAccountSettingsInput) SetPrincipalArn(v string) *ListAccountSettingsInput {
11958	s.PrincipalArn = &v
11959	return s
11960}
11961
11962// SetValue sets the Value field's value.
11963func (s *ListAccountSettingsInput) SetValue(v string) *ListAccountSettingsInput {
11964	s.Value = &v
11965	return s
11966}
11967
11968type ListAccountSettingsOutput struct {
11969	_ struct{} `type:"structure"`
11970
11971	// The nextToken value to include in a future ListAccountSettings request. When
11972	// the results of a ListAccountSettings request exceed maxResults, this value
11973	// can be used to retrieve the next page of results. This value is null when
11974	// there are no more results to return.
11975	NextToken *string `locationName:"nextToken" type:"string"`
11976
11977	// The account settings for the resource.
11978	Settings []*Setting `locationName:"settings" type:"list"`
11979}
11980
11981// String returns the string representation
11982func (s ListAccountSettingsOutput) String() string {
11983	return awsutil.Prettify(s)
11984}
11985
11986// GoString returns the string representation
11987func (s ListAccountSettingsOutput) GoString() string {
11988	return s.String()
11989}
11990
11991// SetNextToken sets the NextToken field's value.
11992func (s *ListAccountSettingsOutput) SetNextToken(v string) *ListAccountSettingsOutput {
11993	s.NextToken = &v
11994	return s
11995}
11996
11997// SetSettings sets the Settings field's value.
11998func (s *ListAccountSettingsOutput) SetSettings(v []*Setting) *ListAccountSettingsOutput {
11999	s.Settings = v
12000	return s
12001}
12002
12003type ListAttributesInput struct {
12004	_ struct{} `type:"structure"`
12005
12006	// The name of the attribute with which to filter the results.
12007	AttributeName *string `locationName:"attributeName" type:"string"`
12008
12009	// The value of the attribute with which to filter results. You must also specify
12010	// an attribute name to use this parameter.
12011	AttributeValue *string `locationName:"attributeValue" type:"string"`
12012
12013	// The short name or full Amazon Resource Name (ARN) of the cluster to list
12014	// attributes. If you do not specify a cluster, the default cluster is assumed.
12015	Cluster *string `locationName:"cluster" type:"string"`
12016
12017	// The maximum number of cluster results returned by ListAttributes in paginated
12018	// output. When this parameter is used, ListAttributes only returns maxResults
12019	// results in a single page along with a nextToken response element. The remaining
12020	// results of the initial request can be seen by sending another ListAttributes
12021	// request with the returned nextToken value. This value can be between 1 and
12022	// 100. If this parameter is not used, then ListAttributes returns up to 100
12023	// results and a nextToken value if applicable.
12024	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12025
12026	// The nextToken value returned from a ListAttributes request indicating that
12027	// more results are available to fulfill the request and further calls will
12028	// be needed. If maxResults was provided, it is possible the number of results
12029	// to be fewer than maxResults.
12030	//
12031	// This token should be treated as an opaque identifier that is only used to
12032	// retrieve the next items in a list and not for other programmatic purposes.
12033	NextToken *string `locationName:"nextToken" type:"string"`
12034
12035	// The type of the target with which to list attributes.
12036	//
12037	// TargetType is a required field
12038	TargetType *string `locationName:"targetType" type:"string" required:"true" enum:"TargetType"`
12039}
12040
12041// String returns the string representation
12042func (s ListAttributesInput) String() string {
12043	return awsutil.Prettify(s)
12044}
12045
12046// GoString returns the string representation
12047func (s ListAttributesInput) GoString() string {
12048	return s.String()
12049}
12050
12051// Validate inspects the fields of the type to determine if they are valid.
12052func (s *ListAttributesInput) Validate() error {
12053	invalidParams := request.ErrInvalidParams{Context: "ListAttributesInput"}
12054	if s.TargetType == nil {
12055		invalidParams.Add(request.NewErrParamRequired("TargetType"))
12056	}
12057
12058	if invalidParams.Len() > 0 {
12059		return invalidParams
12060	}
12061	return nil
12062}
12063
12064// SetAttributeName sets the AttributeName field's value.
12065func (s *ListAttributesInput) SetAttributeName(v string) *ListAttributesInput {
12066	s.AttributeName = &v
12067	return s
12068}
12069
12070// SetAttributeValue sets the AttributeValue field's value.
12071func (s *ListAttributesInput) SetAttributeValue(v string) *ListAttributesInput {
12072	s.AttributeValue = &v
12073	return s
12074}
12075
12076// SetCluster sets the Cluster field's value.
12077func (s *ListAttributesInput) SetCluster(v string) *ListAttributesInput {
12078	s.Cluster = &v
12079	return s
12080}
12081
12082// SetMaxResults sets the MaxResults field's value.
12083func (s *ListAttributesInput) SetMaxResults(v int64) *ListAttributesInput {
12084	s.MaxResults = &v
12085	return s
12086}
12087
12088// SetNextToken sets the NextToken field's value.
12089func (s *ListAttributesInput) SetNextToken(v string) *ListAttributesInput {
12090	s.NextToken = &v
12091	return s
12092}
12093
12094// SetTargetType sets the TargetType field's value.
12095func (s *ListAttributesInput) SetTargetType(v string) *ListAttributesInput {
12096	s.TargetType = &v
12097	return s
12098}
12099
12100type ListAttributesOutput struct {
12101	_ struct{} `type:"structure"`
12102
12103	// A list of attribute objects that meet the criteria of the request.
12104	Attributes []*Attribute `locationName:"attributes" type:"list"`
12105
12106	// The nextToken value to include in a future ListAttributes request. When the
12107	// results of a ListAttributes request exceed maxResults, this value can be
12108	// used to retrieve the next page of results. This value is null when there
12109	// are no more results to return.
12110	NextToken *string `locationName:"nextToken" type:"string"`
12111}
12112
12113// String returns the string representation
12114func (s ListAttributesOutput) String() string {
12115	return awsutil.Prettify(s)
12116}
12117
12118// GoString returns the string representation
12119func (s ListAttributesOutput) GoString() string {
12120	return s.String()
12121}
12122
12123// SetAttributes sets the Attributes field's value.
12124func (s *ListAttributesOutput) SetAttributes(v []*Attribute) *ListAttributesOutput {
12125	s.Attributes = v
12126	return s
12127}
12128
12129// SetNextToken sets the NextToken field's value.
12130func (s *ListAttributesOutput) SetNextToken(v string) *ListAttributesOutput {
12131	s.NextToken = &v
12132	return s
12133}
12134
12135type ListClustersInput struct {
12136	_ struct{} `type:"structure"`
12137
12138	// The maximum number of cluster results returned by ListClusters in paginated
12139	// output. When this parameter is used, ListClusters only returns maxResults
12140	// results in a single page along with a nextToken response element. The remaining
12141	// results of the initial request can be seen by sending another ListClusters
12142	// request with the returned nextToken value. This value can be between 1 and
12143	// 100. If this parameter is not used, then ListClusters returns up to 100 results
12144	// and a nextToken value if applicable.
12145	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12146
12147	// The nextToken value returned from a ListClusters request indicating that
12148	// more results are available to fulfill the request and further calls will
12149	// be needed. If maxResults was provided, it is possible the number of results
12150	// to be fewer than maxResults.
12151	//
12152	// This token should be treated as an opaque identifier that is only used to
12153	// retrieve the next items in a list and not for other programmatic purposes.
12154	NextToken *string `locationName:"nextToken" type:"string"`
12155}
12156
12157// String returns the string representation
12158func (s ListClustersInput) String() string {
12159	return awsutil.Prettify(s)
12160}
12161
12162// GoString returns the string representation
12163func (s ListClustersInput) GoString() string {
12164	return s.String()
12165}
12166
12167// SetMaxResults sets the MaxResults field's value.
12168func (s *ListClustersInput) SetMaxResults(v int64) *ListClustersInput {
12169	s.MaxResults = &v
12170	return s
12171}
12172
12173// SetNextToken sets the NextToken field's value.
12174func (s *ListClustersInput) SetNextToken(v string) *ListClustersInput {
12175	s.NextToken = &v
12176	return s
12177}
12178
12179type ListClustersOutput struct {
12180	_ struct{} `type:"structure"`
12181
12182	// The list of full Amazon Resource Name (ARN) entries for each cluster associated
12183	// with your account.
12184	ClusterArns []*string `locationName:"clusterArns" type:"list"`
12185
12186	// The nextToken value to include in a future ListClusters request. When the
12187	// results of a ListClusters request exceed maxResults, this value can be used
12188	// to retrieve the next page of results. This value is null when there are no
12189	// more results to return.
12190	NextToken *string `locationName:"nextToken" type:"string"`
12191}
12192
12193// String returns the string representation
12194func (s ListClustersOutput) String() string {
12195	return awsutil.Prettify(s)
12196}
12197
12198// GoString returns the string representation
12199func (s ListClustersOutput) GoString() string {
12200	return s.String()
12201}
12202
12203// SetClusterArns sets the ClusterArns field's value.
12204func (s *ListClustersOutput) SetClusterArns(v []*string) *ListClustersOutput {
12205	s.ClusterArns = v
12206	return s
12207}
12208
12209// SetNextToken sets the NextToken field's value.
12210func (s *ListClustersOutput) SetNextToken(v string) *ListClustersOutput {
12211	s.NextToken = &v
12212	return s
12213}
12214
12215type ListContainerInstancesInput struct {
12216	_ struct{} `type:"structure"`
12217
12218	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
12219	// the container instances to list. If you do not specify a cluster, the default
12220	// cluster is assumed.
12221	Cluster *string `locationName:"cluster" type:"string"`
12222
12223	// You can filter the results of a ListContainerInstances operation with cluster
12224	// query language statements. For more information, see Cluster Query Language
12225	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html)
12226	// in the Amazon Elastic Container Service Developer Guide.
12227	Filter *string `locationName:"filter" type:"string"`
12228
12229	// The maximum number of container instance results returned by ListContainerInstances
12230	// in paginated output. When this parameter is used, ListContainerInstances
12231	// only returns maxResults results in a single page along with a nextToken response
12232	// element. The remaining results of the initial request can be seen by sending
12233	// another ListContainerInstances request with the returned nextToken value.
12234	// This value can be between 1 and 100. If this parameter is not used, then
12235	// ListContainerInstances returns up to 100 results and a nextToken value if
12236	// applicable.
12237	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12238
12239	// The nextToken value returned from a ListContainerInstances request indicating
12240	// that more results are available to fulfill the request and further calls
12241	// will be needed. If maxResults was provided, it is possible the number of
12242	// results to be fewer than maxResults.
12243	//
12244	// This token should be treated as an opaque identifier that is only used to
12245	// retrieve the next items in a list and not for other programmatic purposes.
12246	NextToken *string `locationName:"nextToken" type:"string"`
12247
12248	// Filters the container instances by status. For example, if you specify the
12249	// DRAINING status, the results include only container instances that have been
12250	// set to DRAINING using UpdateContainerInstancesState. If you do not specify
12251	// this parameter, the default is to include container instances set to all
12252	// states other than INACTIVE.
12253	Status *string `locationName:"status" type:"string" enum:"ContainerInstanceStatus"`
12254}
12255
12256// String returns the string representation
12257func (s ListContainerInstancesInput) String() string {
12258	return awsutil.Prettify(s)
12259}
12260
12261// GoString returns the string representation
12262func (s ListContainerInstancesInput) GoString() string {
12263	return s.String()
12264}
12265
12266// SetCluster sets the Cluster field's value.
12267func (s *ListContainerInstancesInput) SetCluster(v string) *ListContainerInstancesInput {
12268	s.Cluster = &v
12269	return s
12270}
12271
12272// SetFilter sets the Filter field's value.
12273func (s *ListContainerInstancesInput) SetFilter(v string) *ListContainerInstancesInput {
12274	s.Filter = &v
12275	return s
12276}
12277
12278// SetMaxResults sets the MaxResults field's value.
12279func (s *ListContainerInstancesInput) SetMaxResults(v int64) *ListContainerInstancesInput {
12280	s.MaxResults = &v
12281	return s
12282}
12283
12284// SetNextToken sets the NextToken field's value.
12285func (s *ListContainerInstancesInput) SetNextToken(v string) *ListContainerInstancesInput {
12286	s.NextToken = &v
12287	return s
12288}
12289
12290// SetStatus sets the Status field's value.
12291func (s *ListContainerInstancesInput) SetStatus(v string) *ListContainerInstancesInput {
12292	s.Status = &v
12293	return s
12294}
12295
12296type ListContainerInstancesOutput struct {
12297	_ struct{} `type:"structure"`
12298
12299	// The list of container instances with full ARN entries for each container
12300	// instance associated with the specified cluster.
12301	ContainerInstanceArns []*string `locationName:"containerInstanceArns" type:"list"`
12302
12303	// The nextToken value to include in a future ListContainerInstances request.
12304	// When the results of a ListContainerInstances request exceed maxResults, this
12305	// value can be used to retrieve the next page of results. This value is null
12306	// when there are no more results to return.
12307	NextToken *string `locationName:"nextToken" type:"string"`
12308}
12309
12310// String returns the string representation
12311func (s ListContainerInstancesOutput) String() string {
12312	return awsutil.Prettify(s)
12313}
12314
12315// GoString returns the string representation
12316func (s ListContainerInstancesOutput) GoString() string {
12317	return s.String()
12318}
12319
12320// SetContainerInstanceArns sets the ContainerInstanceArns field's value.
12321func (s *ListContainerInstancesOutput) SetContainerInstanceArns(v []*string) *ListContainerInstancesOutput {
12322	s.ContainerInstanceArns = v
12323	return s
12324}
12325
12326// SetNextToken sets the NextToken field's value.
12327func (s *ListContainerInstancesOutput) SetNextToken(v string) *ListContainerInstancesOutput {
12328	s.NextToken = &v
12329	return s
12330}
12331
12332type ListServicesInput struct {
12333	_ struct{} `type:"structure"`
12334
12335	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
12336	// the services to list. If you do not specify a cluster, the default cluster
12337	// is assumed.
12338	Cluster *string `locationName:"cluster" type:"string"`
12339
12340	// The launch type for the services to list.
12341	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
12342
12343	// The maximum number of service results returned by ListServices in paginated
12344	// output. When this parameter is used, ListServices only returns maxResults
12345	// results in a single page along with a nextToken response element. The remaining
12346	// results of the initial request can be seen by sending another ListServices
12347	// request with the returned nextToken value. This value can be between 1 and
12348	// 100. If this parameter is not used, then ListServices returns up to 10 results
12349	// and a nextToken value if applicable.
12350	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12351
12352	// The nextToken value returned from a ListServices request indicating that
12353	// more results are available to fulfill the request and further calls will
12354	// be needed. If maxResults was provided, it is possible the number of results
12355	// to be fewer than maxResults.
12356	//
12357	// This token should be treated as an opaque identifier that is only used to
12358	// retrieve the next items in a list and not for other programmatic purposes.
12359	NextToken *string `locationName:"nextToken" type:"string"`
12360
12361	// The scheduling strategy for services to list.
12362	SchedulingStrategy *string `locationName:"schedulingStrategy" type:"string" enum:"SchedulingStrategy"`
12363}
12364
12365// String returns the string representation
12366func (s ListServicesInput) String() string {
12367	return awsutil.Prettify(s)
12368}
12369
12370// GoString returns the string representation
12371func (s ListServicesInput) GoString() string {
12372	return s.String()
12373}
12374
12375// SetCluster sets the Cluster field's value.
12376func (s *ListServicesInput) SetCluster(v string) *ListServicesInput {
12377	s.Cluster = &v
12378	return s
12379}
12380
12381// SetLaunchType sets the LaunchType field's value.
12382func (s *ListServicesInput) SetLaunchType(v string) *ListServicesInput {
12383	s.LaunchType = &v
12384	return s
12385}
12386
12387// SetMaxResults sets the MaxResults field's value.
12388func (s *ListServicesInput) SetMaxResults(v int64) *ListServicesInput {
12389	s.MaxResults = &v
12390	return s
12391}
12392
12393// SetNextToken sets the NextToken field's value.
12394func (s *ListServicesInput) SetNextToken(v string) *ListServicesInput {
12395	s.NextToken = &v
12396	return s
12397}
12398
12399// SetSchedulingStrategy sets the SchedulingStrategy field's value.
12400func (s *ListServicesInput) SetSchedulingStrategy(v string) *ListServicesInput {
12401	s.SchedulingStrategy = &v
12402	return s
12403}
12404
12405type ListServicesOutput struct {
12406	_ struct{} `type:"structure"`
12407
12408	// The nextToken value to include in a future ListServices request. When the
12409	// results of a ListServices request exceed maxResults, this value can be used
12410	// to retrieve the next page of results. This value is null when there are no
12411	// more results to return.
12412	NextToken *string `locationName:"nextToken" type:"string"`
12413
12414	// The list of full ARN entries for each service associated with the specified
12415	// cluster.
12416	ServiceArns []*string `locationName:"serviceArns" type:"list"`
12417}
12418
12419// String returns the string representation
12420func (s ListServicesOutput) String() string {
12421	return awsutil.Prettify(s)
12422}
12423
12424// GoString returns the string representation
12425func (s ListServicesOutput) GoString() string {
12426	return s.String()
12427}
12428
12429// SetNextToken sets the NextToken field's value.
12430func (s *ListServicesOutput) SetNextToken(v string) *ListServicesOutput {
12431	s.NextToken = &v
12432	return s
12433}
12434
12435// SetServiceArns sets the ServiceArns field's value.
12436func (s *ListServicesOutput) SetServiceArns(v []*string) *ListServicesOutput {
12437	s.ServiceArns = v
12438	return s
12439}
12440
12441type ListTagsForResourceInput struct {
12442	_ struct{} `type:"structure"`
12443
12444	// The Amazon Resource Name (ARN) that identifies the resource for which to
12445	// list the tags. Currently, the supported resources are Amazon ECS tasks, services,
12446	// task definitions, clusters, and container instances.
12447	//
12448	// ResourceArn is a required field
12449	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`
12450}
12451
12452// String returns the string representation
12453func (s ListTagsForResourceInput) String() string {
12454	return awsutil.Prettify(s)
12455}
12456
12457// GoString returns the string representation
12458func (s ListTagsForResourceInput) GoString() string {
12459	return s.String()
12460}
12461
12462// Validate inspects the fields of the type to determine if they are valid.
12463func (s *ListTagsForResourceInput) Validate() error {
12464	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
12465	if s.ResourceArn == nil {
12466		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
12467	}
12468
12469	if invalidParams.Len() > 0 {
12470		return invalidParams
12471	}
12472	return nil
12473}
12474
12475// SetResourceArn sets the ResourceArn field's value.
12476func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
12477	s.ResourceArn = &v
12478	return s
12479}
12480
12481type ListTagsForResourceOutput struct {
12482	_ struct{} `type:"structure"`
12483
12484	// The tags for the resource.
12485	Tags []*Tag `locationName:"tags" type:"list"`
12486}
12487
12488// String returns the string representation
12489func (s ListTagsForResourceOutput) String() string {
12490	return awsutil.Prettify(s)
12491}
12492
12493// GoString returns the string representation
12494func (s ListTagsForResourceOutput) GoString() string {
12495	return s.String()
12496}
12497
12498// SetTags sets the Tags field's value.
12499func (s *ListTagsForResourceOutput) SetTags(v []*Tag) *ListTagsForResourceOutput {
12500	s.Tags = v
12501	return s
12502}
12503
12504type ListTaskDefinitionFamiliesInput struct {
12505	_ struct{} `type:"structure"`
12506
12507	// The familyPrefix is a string that is used to filter the results of ListTaskDefinitionFamilies.
12508	// If you specify a familyPrefix, only task definition family names that begin
12509	// with the familyPrefix string are returned.
12510	FamilyPrefix *string `locationName:"familyPrefix" type:"string"`
12511
12512	// The maximum number of task definition family results returned by ListTaskDefinitionFamilies
12513	// in paginated output. When this parameter is used, ListTaskDefinitions only
12514	// returns maxResults results in a single page along with a nextToken response
12515	// element. The remaining results of the initial request can be seen by sending
12516	// another ListTaskDefinitionFamilies request with the returned nextToken value.
12517	// This value can be between 1 and 100. If this parameter is not used, then
12518	// ListTaskDefinitionFamilies returns up to 100 results and a nextToken value
12519	// if applicable.
12520	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12521
12522	// The nextToken value returned from a ListTaskDefinitionFamilies request indicating
12523	// that more results are available to fulfill the request and further calls
12524	// will be needed. If maxResults was provided, it is possible the number of
12525	// results to be fewer than maxResults.
12526	//
12527	// This token should be treated as an opaque identifier that is only used to
12528	// retrieve the next items in a list and not for other programmatic purposes.
12529	NextToken *string `locationName:"nextToken" type:"string"`
12530
12531	// The task definition family status with which to filter the ListTaskDefinitionFamilies
12532	// results. By default, both ACTIVE and INACTIVE task definition families are
12533	// listed. If this parameter is set to ACTIVE, only task definition families
12534	// that have an ACTIVE task definition revision are returned. If this parameter
12535	// is set to INACTIVE, only task definition families that do not have any ACTIVE
12536	// task definition revisions are returned. If you paginate the resulting output,
12537	// be sure to keep the status value constant in each subsequent request.
12538	Status *string `locationName:"status" type:"string" enum:"TaskDefinitionFamilyStatus"`
12539}
12540
12541// String returns the string representation
12542func (s ListTaskDefinitionFamiliesInput) String() string {
12543	return awsutil.Prettify(s)
12544}
12545
12546// GoString returns the string representation
12547func (s ListTaskDefinitionFamiliesInput) GoString() string {
12548	return s.String()
12549}
12550
12551// SetFamilyPrefix sets the FamilyPrefix field's value.
12552func (s *ListTaskDefinitionFamiliesInput) SetFamilyPrefix(v string) *ListTaskDefinitionFamiliesInput {
12553	s.FamilyPrefix = &v
12554	return s
12555}
12556
12557// SetMaxResults sets the MaxResults field's value.
12558func (s *ListTaskDefinitionFamiliesInput) SetMaxResults(v int64) *ListTaskDefinitionFamiliesInput {
12559	s.MaxResults = &v
12560	return s
12561}
12562
12563// SetNextToken sets the NextToken field's value.
12564func (s *ListTaskDefinitionFamiliesInput) SetNextToken(v string) *ListTaskDefinitionFamiliesInput {
12565	s.NextToken = &v
12566	return s
12567}
12568
12569// SetStatus sets the Status field's value.
12570func (s *ListTaskDefinitionFamiliesInput) SetStatus(v string) *ListTaskDefinitionFamiliesInput {
12571	s.Status = &v
12572	return s
12573}
12574
12575type ListTaskDefinitionFamiliesOutput struct {
12576	_ struct{} `type:"structure"`
12577
12578	// The list of task definition family names that match the ListTaskDefinitionFamilies
12579	// request.
12580	Families []*string `locationName:"families" type:"list"`
12581
12582	// The nextToken value to include in a future ListTaskDefinitionFamilies request.
12583	// When the results of a ListTaskDefinitionFamilies request exceed maxResults,
12584	// this value can be used to retrieve the next page of results. This value is
12585	// null when there are no more results to return.
12586	NextToken *string `locationName:"nextToken" type:"string"`
12587}
12588
12589// String returns the string representation
12590func (s ListTaskDefinitionFamiliesOutput) String() string {
12591	return awsutil.Prettify(s)
12592}
12593
12594// GoString returns the string representation
12595func (s ListTaskDefinitionFamiliesOutput) GoString() string {
12596	return s.String()
12597}
12598
12599// SetFamilies sets the Families field's value.
12600func (s *ListTaskDefinitionFamiliesOutput) SetFamilies(v []*string) *ListTaskDefinitionFamiliesOutput {
12601	s.Families = v
12602	return s
12603}
12604
12605// SetNextToken sets the NextToken field's value.
12606func (s *ListTaskDefinitionFamiliesOutput) SetNextToken(v string) *ListTaskDefinitionFamiliesOutput {
12607	s.NextToken = &v
12608	return s
12609}
12610
12611type ListTaskDefinitionsInput struct {
12612	_ struct{} `type:"structure"`
12613
12614	// The full family name with which to filter the ListTaskDefinitions results.
12615	// Specifying a familyPrefix limits the listed task definitions to task definition
12616	// revisions that belong to that family.
12617	FamilyPrefix *string `locationName:"familyPrefix" type:"string"`
12618
12619	// The maximum number of task definition results returned by ListTaskDefinitions
12620	// in paginated output. When this parameter is used, ListTaskDefinitions only
12621	// returns maxResults results in a single page along with a nextToken response
12622	// element. The remaining results of the initial request can be seen by sending
12623	// another ListTaskDefinitions request with the returned nextToken value. This
12624	// value can be between 1 and 100. If this parameter is not used, then ListTaskDefinitions
12625	// returns up to 100 results and a nextToken value if applicable.
12626	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12627
12628	// The nextToken value returned from a ListTaskDefinitions request indicating
12629	// that more results are available to fulfill the request and further calls
12630	// will be needed. If maxResults was provided, it is possible the number of
12631	// results to be fewer than maxResults.
12632	//
12633	// This token should be treated as an opaque identifier that is only used to
12634	// retrieve the next items in a list and not for other programmatic purposes.
12635	NextToken *string `locationName:"nextToken" type:"string"`
12636
12637	// The order in which to sort the results. Valid values are ASC and DESC. By
12638	// default (ASC), task definitions are listed lexicographically by family name
12639	// and in ascending numerical order by revision so that the newest task definitions
12640	// in a family are listed last. Setting this parameter to DESC reverses the
12641	// sort order on family name and revision so that the newest task definitions
12642	// in a family are listed first.
12643	Sort *string `locationName:"sort" type:"string" enum:"SortOrder"`
12644
12645	// The task definition status with which to filter the ListTaskDefinitions results.
12646	// By default, only ACTIVE task definitions are listed. By setting this parameter
12647	// to INACTIVE, you can view task definitions that are INACTIVE as long as an
12648	// active task or service still references them. If you paginate the resulting
12649	// output, be sure to keep the status value constant in each subsequent request.
12650	Status *string `locationName:"status" type:"string" enum:"TaskDefinitionStatus"`
12651}
12652
12653// String returns the string representation
12654func (s ListTaskDefinitionsInput) String() string {
12655	return awsutil.Prettify(s)
12656}
12657
12658// GoString returns the string representation
12659func (s ListTaskDefinitionsInput) GoString() string {
12660	return s.String()
12661}
12662
12663// SetFamilyPrefix sets the FamilyPrefix field's value.
12664func (s *ListTaskDefinitionsInput) SetFamilyPrefix(v string) *ListTaskDefinitionsInput {
12665	s.FamilyPrefix = &v
12666	return s
12667}
12668
12669// SetMaxResults sets the MaxResults field's value.
12670func (s *ListTaskDefinitionsInput) SetMaxResults(v int64) *ListTaskDefinitionsInput {
12671	s.MaxResults = &v
12672	return s
12673}
12674
12675// SetNextToken sets the NextToken field's value.
12676func (s *ListTaskDefinitionsInput) SetNextToken(v string) *ListTaskDefinitionsInput {
12677	s.NextToken = &v
12678	return s
12679}
12680
12681// SetSort sets the Sort field's value.
12682func (s *ListTaskDefinitionsInput) SetSort(v string) *ListTaskDefinitionsInput {
12683	s.Sort = &v
12684	return s
12685}
12686
12687// SetStatus sets the Status field's value.
12688func (s *ListTaskDefinitionsInput) SetStatus(v string) *ListTaskDefinitionsInput {
12689	s.Status = &v
12690	return s
12691}
12692
12693type ListTaskDefinitionsOutput struct {
12694	_ struct{} `type:"structure"`
12695
12696	// The nextToken value to include in a future ListTaskDefinitions request. When
12697	// the results of a ListTaskDefinitions request exceed maxResults, this value
12698	// can be used to retrieve the next page of results. This value is null when
12699	// there are no more results to return.
12700	NextToken *string `locationName:"nextToken" type:"string"`
12701
12702	// The list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefinitions
12703	// request.
12704	TaskDefinitionArns []*string `locationName:"taskDefinitionArns" type:"list"`
12705}
12706
12707// String returns the string representation
12708func (s ListTaskDefinitionsOutput) String() string {
12709	return awsutil.Prettify(s)
12710}
12711
12712// GoString returns the string representation
12713func (s ListTaskDefinitionsOutput) GoString() string {
12714	return s.String()
12715}
12716
12717// SetNextToken sets the NextToken field's value.
12718func (s *ListTaskDefinitionsOutput) SetNextToken(v string) *ListTaskDefinitionsOutput {
12719	s.NextToken = &v
12720	return s
12721}
12722
12723// SetTaskDefinitionArns sets the TaskDefinitionArns field's value.
12724func (s *ListTaskDefinitionsOutput) SetTaskDefinitionArns(v []*string) *ListTaskDefinitionsOutput {
12725	s.TaskDefinitionArns = v
12726	return s
12727}
12728
12729type ListTasksInput struct {
12730	_ struct{} `type:"structure"`
12731
12732	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
12733	// the tasks to list. If you do not specify a cluster, the default cluster is
12734	// assumed.
12735	Cluster *string `locationName:"cluster" type:"string"`
12736
12737	// The container instance ID or full ARN of the container instance with which
12738	// to filter the ListTasks results. Specifying a containerInstance limits the
12739	// results to tasks that belong to that container instance.
12740	ContainerInstance *string `locationName:"containerInstance" type:"string"`
12741
12742	// The task desired status with which to filter the ListTasks results. Specifying
12743	// a desiredStatus of STOPPED limits the results to tasks that Amazon ECS has
12744	// set the desired status to STOPPED. This can be useful for debugging tasks
12745	// that are not starting properly or have died or finished. The default status
12746	// filter is RUNNING, which shows tasks that Amazon ECS has set the desired
12747	// status to RUNNING.
12748	//
12749	// Although you can filter results based on a desired status of PENDING, this
12750	// does not return any results. Amazon ECS never sets the desired status of
12751	// a task to that value (only a task's lastStatus may have a value of PENDING).
12752	DesiredStatus *string `locationName:"desiredStatus" type:"string" enum:"DesiredStatus"`
12753
12754	// The name of the family with which to filter the ListTasks results. Specifying
12755	// a family limits the results to tasks that belong to that family.
12756	Family *string `locationName:"family" type:"string"`
12757
12758	// The launch type for services to list.
12759	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
12760
12761	// The maximum number of task results returned by ListTasks in paginated output.
12762	// When this parameter is used, ListTasks only returns maxResults results in
12763	// a single page along with a nextToken response element. The remaining results
12764	// of the initial request can be seen by sending another ListTasks request with
12765	// the returned nextToken value. This value can be between 1 and 100. If this
12766	// parameter is not used, then ListTasks returns up to 100 results and a nextToken
12767	// value if applicable.
12768	MaxResults *int64 `locationName:"maxResults" type:"integer"`
12769
12770	// The nextToken value returned from a ListTasks request indicating that more
12771	// results are available to fulfill the request and further calls will be needed.
12772	// If maxResults was provided, it is possible the number of results to be fewer
12773	// than maxResults.
12774	//
12775	// This token should be treated as an opaque identifier that is only used to
12776	// retrieve the next items in a list and not for other programmatic purposes.
12777	NextToken *string `locationName:"nextToken" type:"string"`
12778
12779	// The name of the service with which to filter the ListTasks results. Specifying
12780	// a serviceName limits the results to tasks that belong to that service.
12781	ServiceName *string `locationName:"serviceName" type:"string"`
12782
12783	// The startedBy value with which to filter the task results. Specifying a startedBy
12784	// value limits the results to tasks that were started with that value.
12785	StartedBy *string `locationName:"startedBy" type:"string"`
12786}
12787
12788// String returns the string representation
12789func (s ListTasksInput) String() string {
12790	return awsutil.Prettify(s)
12791}
12792
12793// GoString returns the string representation
12794func (s ListTasksInput) GoString() string {
12795	return s.String()
12796}
12797
12798// SetCluster sets the Cluster field's value.
12799func (s *ListTasksInput) SetCluster(v string) *ListTasksInput {
12800	s.Cluster = &v
12801	return s
12802}
12803
12804// SetContainerInstance sets the ContainerInstance field's value.
12805func (s *ListTasksInput) SetContainerInstance(v string) *ListTasksInput {
12806	s.ContainerInstance = &v
12807	return s
12808}
12809
12810// SetDesiredStatus sets the DesiredStatus field's value.
12811func (s *ListTasksInput) SetDesiredStatus(v string) *ListTasksInput {
12812	s.DesiredStatus = &v
12813	return s
12814}
12815
12816// SetFamily sets the Family field's value.
12817func (s *ListTasksInput) SetFamily(v string) *ListTasksInput {
12818	s.Family = &v
12819	return s
12820}
12821
12822// SetLaunchType sets the LaunchType field's value.
12823func (s *ListTasksInput) SetLaunchType(v string) *ListTasksInput {
12824	s.LaunchType = &v
12825	return s
12826}
12827
12828// SetMaxResults sets the MaxResults field's value.
12829func (s *ListTasksInput) SetMaxResults(v int64) *ListTasksInput {
12830	s.MaxResults = &v
12831	return s
12832}
12833
12834// SetNextToken sets the NextToken field's value.
12835func (s *ListTasksInput) SetNextToken(v string) *ListTasksInput {
12836	s.NextToken = &v
12837	return s
12838}
12839
12840// SetServiceName sets the ServiceName field's value.
12841func (s *ListTasksInput) SetServiceName(v string) *ListTasksInput {
12842	s.ServiceName = &v
12843	return s
12844}
12845
12846// SetStartedBy sets the StartedBy field's value.
12847func (s *ListTasksInput) SetStartedBy(v string) *ListTasksInput {
12848	s.StartedBy = &v
12849	return s
12850}
12851
12852type ListTasksOutput struct {
12853	_ struct{} `type:"structure"`
12854
12855	// The nextToken value to include in a future ListTasks request. When the results
12856	// of a ListTasks request exceed maxResults, this value can be used to retrieve
12857	// the next page of results. This value is null when there are no more results
12858	// to return.
12859	NextToken *string `locationName:"nextToken" type:"string"`
12860
12861	// The list of task ARN entries for the ListTasks request.
12862	TaskArns []*string `locationName:"taskArns" type:"list"`
12863}
12864
12865// String returns the string representation
12866func (s ListTasksOutput) String() string {
12867	return awsutil.Prettify(s)
12868}
12869
12870// GoString returns the string representation
12871func (s ListTasksOutput) GoString() string {
12872	return s.String()
12873}
12874
12875// SetNextToken sets the NextToken field's value.
12876func (s *ListTasksOutput) SetNextToken(v string) *ListTasksOutput {
12877	s.NextToken = &v
12878	return s
12879}
12880
12881// SetTaskArns sets the TaskArns field's value.
12882func (s *ListTasksOutput) SetTaskArns(v []*string) *ListTasksOutput {
12883	s.TaskArns = v
12884	return s
12885}
12886
12887// Details on the load balancer or load balancers to use with a service or task
12888// set.
12889type LoadBalancer struct {
12890	_ struct{} `type:"structure"`
12891
12892	// The name of the container (as it appears in a container definition) to associate
12893	// with the load balancer.
12894	ContainerName *string `locationName:"containerName" type:"string"`
12895
12896	// The port on the container to associate with the load balancer. This port
12897	// must correspond to a containerPort in the task definition the tasks in the
12898	// service are using. For tasks that use the EC2 launch type, the container
12899	// instance they are launched on must allow ingress traffic on the hostPort
12900	// of the port mapping.
12901	ContainerPort *int64 `locationName:"containerPort" type:"integer"`
12902
12903	// The name of the load balancer to associate with the Amazon ECS service or
12904	// task set.
12905	//
12906	// A load balancer name is only specified when using a Classic Load Balancer.
12907	// If you are using an Application Load Balancer or a Network Load Balancer
12908	// this should be omitted.
12909	LoadBalancerName *string `locationName:"loadBalancerName" type:"string"`
12910
12911	// The full Amazon Resource Name (ARN) of the Elastic Load Balancing target
12912	// group or groups associated with a service or task set.
12913	//
12914	// A target group ARN is only specified when using an Application Load Balancer
12915	// or Network Load Balancer. If you are using a Classic Load Balancer this should
12916	// be omitted.
12917	//
12918	// For services using the ECS deployment controller, you can specify one or
12919	// multiple target groups. For more information, see Registering Multiple Target
12920	// Groups with a Service (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html)
12921	// in the Amazon Elastic Container Service Developer Guide.
12922	//
12923	// For services using the CODE_DEPLOY deployment controller, you are required
12924	// to define two target groups for the load balancer. For more information,
12925	// see Blue/Green Deployment with CodeDeploy (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html)
12926	// in the Amazon Elastic Container Service Developer Guide.
12927	//
12928	// If your service's task definition uses the awsvpc network mode (which is
12929	// required for the Fargate launch type), you must choose ip as the target type,
12930	// not instance, when creating your target groups because tasks that use the
12931	// awsvpc network mode are associated with an elastic network interface, not
12932	// an Amazon EC2 instance.
12933	TargetGroupArn *string `locationName:"targetGroupArn" type:"string"`
12934}
12935
12936// String returns the string representation
12937func (s LoadBalancer) String() string {
12938	return awsutil.Prettify(s)
12939}
12940
12941// GoString returns the string representation
12942func (s LoadBalancer) GoString() string {
12943	return s.String()
12944}
12945
12946// SetContainerName sets the ContainerName field's value.
12947func (s *LoadBalancer) SetContainerName(v string) *LoadBalancer {
12948	s.ContainerName = &v
12949	return s
12950}
12951
12952// SetContainerPort sets the ContainerPort field's value.
12953func (s *LoadBalancer) SetContainerPort(v int64) *LoadBalancer {
12954	s.ContainerPort = &v
12955	return s
12956}
12957
12958// SetLoadBalancerName sets the LoadBalancerName field's value.
12959func (s *LoadBalancer) SetLoadBalancerName(v string) *LoadBalancer {
12960	s.LoadBalancerName = &v
12961	return s
12962}
12963
12964// SetTargetGroupArn sets the TargetGroupArn field's value.
12965func (s *LoadBalancer) SetTargetGroupArn(v string) *LoadBalancer {
12966	s.TargetGroupArn = &v
12967	return s
12968}
12969
12970// The log configuration specification for the container.
12971//
12972// This parameter maps to LogConfig in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
12973// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
12974// and the --log-driver option to docker run (https://docs.docker.com/engine/reference/commandline/run/).
12975// By default, containers use the same logging driver that the Docker daemon
12976// uses; however the container may use a different logging driver than the Docker
12977// daemon by specifying a log driver with this parameter in the container definition.
12978// To use a different logging driver for a container, the log system must be
12979// configured properly on the container instance (or on a different log server
12980// for remote logging options). For more information on the options for different
12981// supported log drivers, see Configure logging drivers (https://docs.docker.com/engine/admin/logging/overview/)
12982// in the Docker documentation.
12983//
12984// The following should be noted when specifying a log configuration for your
12985// containers:
12986//
12987//    * Amazon ECS currently supports a subset of the logging drivers available
12988//    to the Docker daemon (shown in the valid values below). Additional log
12989//    drivers may be available in future releases of the Amazon ECS container
12990//    agent.
12991//
12992//    * This parameter requires version 1.18 of the Docker Remote API or greater
12993//    on your container instance.
12994//
12995//    * For tasks using the EC2 launch type, the Amazon ECS container agent
12996//    running on a container instance must register the logging drivers available
12997//    on that instance with the ECS_AVAILABLE_LOGGING_DRIVERS environment variable
12998//    before containers placed on that instance can use these log configuration
12999//    options. For more information, see Amazon ECS Container Agent Configuration
13000//    (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html)
13001//    in the Amazon Elastic Container Service Developer Guide.
13002//
13003//    * For tasks using the Fargate launch type, because you do not have access
13004//    to the underlying infrastructure your tasks are hosted on, any additional
13005//    software needed will have to be installed outside of the task. For example,
13006//    the Fluentd output aggregators or a remote host running Logstash to send
13007//    Gelf logs to.
13008type LogConfiguration struct {
13009	_ struct{} `type:"structure"`
13010
13011	// The log driver to use for the container. The valid values listed earlier
13012	// are log drivers that the Amazon ECS container agent can communicate with
13013	// by default.
13014	//
13015	// For tasks using the Fargate launch type, the supported log drivers are awslogs,
13016	// splunk, and awsfirelens.
13017	//
13018	// For tasks using the EC2 launch type, the supported log drivers are awslogs,
13019	// fluentd, gelf, json-file, journald, logentries,syslog, splunk, and awsfirelens.
13020	//
13021	// For more information about using the awslogs log driver, see Using the awslogs
13022	// Log Driver (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html)
13023	// in the Amazon Elastic Container Service Developer Guide.
13024	//
13025	// For more information about using the awsfirelens log driver, see Custom Log
13026	// Routing (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html)
13027	// in the Amazon Elastic Container Service Developer Guide.
13028	//
13029	// If you have a custom driver that is not listed, you can fork the Amazon ECS
13030	// container agent project that is available on GitHub (https://github.com/aws/amazon-ecs-agent)
13031	// and customize it to work with that driver. We encourage you to submit pull
13032	// requests for changes that you would like to have included. However, we do
13033	// not currently provide support for running modified copies of this software.
13034	//
13035	// LogDriver is a required field
13036	LogDriver *string `locationName:"logDriver" type:"string" required:"true" enum:"LogDriver"`
13037
13038	// The configuration options to send to the log driver. This parameter requires
13039	// version 1.19 of the Docker Remote API or greater on your container instance.
13040	// To check the Docker Remote API version on your container instance, log in
13041	// to your container instance and run the following command: sudo docker version
13042	// --format '{{.Server.APIVersion}}'
13043	Options map[string]*string `locationName:"options" type:"map"`
13044
13045	// The secrets to pass to the log configuration. For more information, see Specifying
13046	// Sensitive Data (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html)
13047	// in the Amazon Elastic Container Service Developer Guide.
13048	SecretOptions []*Secret `locationName:"secretOptions" type:"list"`
13049}
13050
13051// String returns the string representation
13052func (s LogConfiguration) String() string {
13053	return awsutil.Prettify(s)
13054}
13055
13056// GoString returns the string representation
13057func (s LogConfiguration) GoString() string {
13058	return s.String()
13059}
13060
13061// Validate inspects the fields of the type to determine if they are valid.
13062func (s *LogConfiguration) Validate() error {
13063	invalidParams := request.ErrInvalidParams{Context: "LogConfiguration"}
13064	if s.LogDriver == nil {
13065		invalidParams.Add(request.NewErrParamRequired("LogDriver"))
13066	}
13067	if s.SecretOptions != nil {
13068		for i, v := range s.SecretOptions {
13069			if v == nil {
13070				continue
13071			}
13072			if err := v.Validate(); err != nil {
13073				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "SecretOptions", i), err.(request.ErrInvalidParams))
13074			}
13075		}
13076	}
13077
13078	if invalidParams.Len() > 0 {
13079		return invalidParams
13080	}
13081	return nil
13082}
13083
13084// SetLogDriver sets the LogDriver field's value.
13085func (s *LogConfiguration) SetLogDriver(v string) *LogConfiguration {
13086	s.LogDriver = &v
13087	return s
13088}
13089
13090// SetOptions sets the Options field's value.
13091func (s *LogConfiguration) SetOptions(v map[string]*string) *LogConfiguration {
13092	s.Options = v
13093	return s
13094}
13095
13096// SetSecretOptions sets the SecretOptions field's value.
13097func (s *LogConfiguration) SetSecretOptions(v []*Secret) *LogConfiguration {
13098	s.SecretOptions = v
13099	return s
13100}
13101
13102// The managed scaling settings for the Auto Scaling group capacity provider.
13103//
13104// When managed scaling is enabled, Amazon ECS manages the scale-in and scale-out
13105// actions of the Auto Scaling group. Amazon ECS manages a target tracking scaling
13106// policy using an Amazon ECS-managed CloudWatch metric with the specified targetCapacity
13107// value as the target value for the metric. For more information, see Using
13108// Managed Scaling (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html#asg-capacity-providers-managed-scaling)
13109// in the Amazon Elastic Container Service Developer Guide.
13110//
13111// If managed scaling is disabled, the user must manage the scaling of the Auto
13112// Scaling group.
13113type ManagedScaling struct {
13114	_ struct{} `type:"structure"`
13115
13116	// The maximum number of container instances that Amazon ECS will scale in or
13117	// scale out at one time. If this parameter is omitted, the default value of
13118	// 10000 is used.
13119	MaximumScalingStepSize *int64 `locationName:"maximumScalingStepSize" min:"1" type:"integer"`
13120
13121	// The minimum number of container instances that Amazon ECS will scale in or
13122	// scale out at one time. If this parameter is omitted, the default value of
13123	// 1 is used.
13124	MinimumScalingStepSize *int64 `locationName:"minimumScalingStepSize" min:"1" type:"integer"`
13125
13126	// Whether or not to enable managed scaling for the capacity provider.
13127	Status *string `locationName:"status" type:"string" enum:"ManagedScalingStatus"`
13128
13129	// The target capacity value for the capacity provider. The specified value
13130	// must be greater than 0 and less than or equal to 100. A value of 100 will
13131	// result in the Amazon EC2 instances in your Auto Scaling group being completely
13132	// utilized.
13133	TargetCapacity *int64 `locationName:"targetCapacity" min:"1" type:"integer"`
13134}
13135
13136// String returns the string representation
13137func (s ManagedScaling) String() string {
13138	return awsutil.Prettify(s)
13139}
13140
13141// GoString returns the string representation
13142func (s ManagedScaling) GoString() string {
13143	return s.String()
13144}
13145
13146// Validate inspects the fields of the type to determine if they are valid.
13147func (s *ManagedScaling) Validate() error {
13148	invalidParams := request.ErrInvalidParams{Context: "ManagedScaling"}
13149	if s.MaximumScalingStepSize != nil && *s.MaximumScalingStepSize < 1 {
13150		invalidParams.Add(request.NewErrParamMinValue("MaximumScalingStepSize", 1))
13151	}
13152	if s.MinimumScalingStepSize != nil && *s.MinimumScalingStepSize < 1 {
13153		invalidParams.Add(request.NewErrParamMinValue("MinimumScalingStepSize", 1))
13154	}
13155	if s.TargetCapacity != nil && *s.TargetCapacity < 1 {
13156		invalidParams.Add(request.NewErrParamMinValue("TargetCapacity", 1))
13157	}
13158
13159	if invalidParams.Len() > 0 {
13160		return invalidParams
13161	}
13162	return nil
13163}
13164
13165// SetMaximumScalingStepSize sets the MaximumScalingStepSize field's value.
13166func (s *ManagedScaling) SetMaximumScalingStepSize(v int64) *ManagedScaling {
13167	s.MaximumScalingStepSize = &v
13168	return s
13169}
13170
13171// SetMinimumScalingStepSize sets the MinimumScalingStepSize field's value.
13172func (s *ManagedScaling) SetMinimumScalingStepSize(v int64) *ManagedScaling {
13173	s.MinimumScalingStepSize = &v
13174	return s
13175}
13176
13177// SetStatus sets the Status field's value.
13178func (s *ManagedScaling) SetStatus(v string) *ManagedScaling {
13179	s.Status = &v
13180	return s
13181}
13182
13183// SetTargetCapacity sets the TargetCapacity field's value.
13184func (s *ManagedScaling) SetTargetCapacity(v int64) *ManagedScaling {
13185	s.TargetCapacity = &v
13186	return s
13187}
13188
13189// Amazon ECS is unable to determine the current version of the Amazon ECS container
13190// agent on the container instance and does not have enough information to proceed
13191// with an update. This could be because the agent running on the container
13192// instance is an older or custom version that does not use our version information.
13193type MissingVersionException struct {
13194	_            struct{} `type:"structure"`
13195	respMetadata protocol.ResponseMetadata
13196
13197	Message_ *string `locationName:"message" type:"string"`
13198}
13199
13200// String returns the string representation
13201func (s MissingVersionException) String() string {
13202	return awsutil.Prettify(s)
13203}
13204
13205// GoString returns the string representation
13206func (s MissingVersionException) GoString() string {
13207	return s.String()
13208}
13209
13210func newErrorMissingVersionException(v protocol.ResponseMetadata) error {
13211	return &MissingVersionException{
13212		respMetadata: v,
13213	}
13214}
13215
13216// Code returns the exception type name.
13217func (s MissingVersionException) Code() string {
13218	return "MissingVersionException"
13219}
13220
13221// Message returns the exception's message.
13222func (s MissingVersionException) Message() string {
13223	if s.Message_ != nil {
13224		return *s.Message_
13225	}
13226	return ""
13227}
13228
13229// OrigErr always returns nil, satisfies awserr.Error interface.
13230func (s MissingVersionException) OrigErr() error {
13231	return nil
13232}
13233
13234func (s MissingVersionException) Error() string {
13235	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13236}
13237
13238// Status code returns the HTTP status code for the request's response error.
13239func (s MissingVersionException) StatusCode() int {
13240	return s.respMetadata.StatusCode
13241}
13242
13243// RequestID returns the service's response RequestID for request.
13244func (s MissingVersionException) RequestID() string {
13245	return s.respMetadata.RequestID
13246}
13247
13248// Details on a volume mount point that is used in a container definition.
13249type MountPoint struct {
13250	_ struct{} `type:"structure"`
13251
13252	// The path on the container to mount the host volume at.
13253	ContainerPath *string `locationName:"containerPath" type:"string"`
13254
13255	// If this value is true, the container has read-only access to the volume.
13256	// If this value is false, then the container can write to the volume. The default
13257	// value is false.
13258	ReadOnly *bool `locationName:"readOnly" type:"boolean"`
13259
13260	// The name of the volume to mount. Must be a volume name referenced in the
13261	// name parameter of task definition volume.
13262	SourceVolume *string `locationName:"sourceVolume" type:"string"`
13263}
13264
13265// String returns the string representation
13266func (s MountPoint) String() string {
13267	return awsutil.Prettify(s)
13268}
13269
13270// GoString returns the string representation
13271func (s MountPoint) GoString() string {
13272	return s.String()
13273}
13274
13275// SetContainerPath sets the ContainerPath field's value.
13276func (s *MountPoint) SetContainerPath(v string) *MountPoint {
13277	s.ContainerPath = &v
13278	return s
13279}
13280
13281// SetReadOnly sets the ReadOnly field's value.
13282func (s *MountPoint) SetReadOnly(v bool) *MountPoint {
13283	s.ReadOnly = &v
13284	return s
13285}
13286
13287// SetSourceVolume sets the SourceVolume field's value.
13288func (s *MountPoint) SetSourceVolume(v string) *MountPoint {
13289	s.SourceVolume = &v
13290	return s
13291}
13292
13293// Details on the network bindings between a container and its host container
13294// instance. After a task reaches the RUNNING status, manual and automatic host
13295// and container port assignments are visible in the networkBindings section
13296// of DescribeTasks API responses.
13297type NetworkBinding struct {
13298	_ struct{} `type:"structure"`
13299
13300	// The IP address that the container is bound to on the container instance.
13301	BindIP *string `locationName:"bindIP" type:"string"`
13302
13303	// The port number on the container that is used with the network binding.
13304	ContainerPort *int64 `locationName:"containerPort" type:"integer"`
13305
13306	// The port number on the host that is used with the network binding.
13307	HostPort *int64 `locationName:"hostPort" type:"integer"`
13308
13309	// The protocol used for the network binding.
13310	Protocol *string `locationName:"protocol" type:"string" enum:"TransportProtocol"`
13311}
13312
13313// String returns the string representation
13314func (s NetworkBinding) String() string {
13315	return awsutil.Prettify(s)
13316}
13317
13318// GoString returns the string representation
13319func (s NetworkBinding) GoString() string {
13320	return s.String()
13321}
13322
13323// SetBindIP sets the BindIP field's value.
13324func (s *NetworkBinding) SetBindIP(v string) *NetworkBinding {
13325	s.BindIP = &v
13326	return s
13327}
13328
13329// SetContainerPort sets the ContainerPort field's value.
13330func (s *NetworkBinding) SetContainerPort(v int64) *NetworkBinding {
13331	s.ContainerPort = &v
13332	return s
13333}
13334
13335// SetHostPort sets the HostPort field's value.
13336func (s *NetworkBinding) SetHostPort(v int64) *NetworkBinding {
13337	s.HostPort = &v
13338	return s
13339}
13340
13341// SetProtocol sets the Protocol field's value.
13342func (s *NetworkBinding) SetProtocol(v string) *NetworkBinding {
13343	s.Protocol = &v
13344	return s
13345}
13346
13347// An object representing the network configuration for a task or service.
13348type NetworkConfiguration struct {
13349	_ struct{} `type:"structure"`
13350
13351	// The VPC subnets and security groups associated with a task.
13352	//
13353	// All specified subnets and security groups must be from the same VPC.
13354	AwsvpcConfiguration *AwsVpcConfiguration `locationName:"awsvpcConfiguration" type:"structure"`
13355}
13356
13357// String returns the string representation
13358func (s NetworkConfiguration) String() string {
13359	return awsutil.Prettify(s)
13360}
13361
13362// GoString returns the string representation
13363func (s NetworkConfiguration) GoString() string {
13364	return s.String()
13365}
13366
13367// Validate inspects the fields of the type to determine if they are valid.
13368func (s *NetworkConfiguration) Validate() error {
13369	invalidParams := request.ErrInvalidParams{Context: "NetworkConfiguration"}
13370	if s.AwsvpcConfiguration != nil {
13371		if err := s.AwsvpcConfiguration.Validate(); err != nil {
13372			invalidParams.AddNested("AwsvpcConfiguration", err.(request.ErrInvalidParams))
13373		}
13374	}
13375
13376	if invalidParams.Len() > 0 {
13377		return invalidParams
13378	}
13379	return nil
13380}
13381
13382// SetAwsvpcConfiguration sets the AwsvpcConfiguration field's value.
13383func (s *NetworkConfiguration) SetAwsvpcConfiguration(v *AwsVpcConfiguration) *NetworkConfiguration {
13384	s.AwsvpcConfiguration = v
13385	return s
13386}
13387
13388// An object representing the elastic network interface for tasks that use the
13389// awsvpc network mode.
13390type NetworkInterface struct {
13391	_ struct{} `type:"structure"`
13392
13393	// The attachment ID for the network interface.
13394	AttachmentId *string `locationName:"attachmentId" type:"string"`
13395
13396	// The private IPv6 address for the network interface.
13397	Ipv6Address *string `locationName:"ipv6Address" type:"string"`
13398
13399	// The private IPv4 address for the network interface.
13400	PrivateIpv4Address *string `locationName:"privateIpv4Address" type:"string"`
13401}
13402
13403// String returns the string representation
13404func (s NetworkInterface) String() string {
13405	return awsutil.Prettify(s)
13406}
13407
13408// GoString returns the string representation
13409func (s NetworkInterface) GoString() string {
13410	return s.String()
13411}
13412
13413// SetAttachmentId sets the AttachmentId field's value.
13414func (s *NetworkInterface) SetAttachmentId(v string) *NetworkInterface {
13415	s.AttachmentId = &v
13416	return s
13417}
13418
13419// SetIpv6Address sets the Ipv6Address field's value.
13420func (s *NetworkInterface) SetIpv6Address(v string) *NetworkInterface {
13421	s.Ipv6Address = &v
13422	return s
13423}
13424
13425// SetPrivateIpv4Address sets the PrivateIpv4Address field's value.
13426func (s *NetworkInterface) SetPrivateIpv4Address(v string) *NetworkInterface {
13427	s.PrivateIpv4Address = &v
13428	return s
13429}
13430
13431// There is no update available for this Amazon ECS container agent. This could
13432// be because the agent is already running the latest version, or it is so old
13433// that there is no update path to the current version.
13434type NoUpdateAvailableException struct {
13435	_            struct{} `type:"structure"`
13436	respMetadata protocol.ResponseMetadata
13437
13438	Message_ *string `locationName:"message" type:"string"`
13439}
13440
13441// String returns the string representation
13442func (s NoUpdateAvailableException) String() string {
13443	return awsutil.Prettify(s)
13444}
13445
13446// GoString returns the string representation
13447func (s NoUpdateAvailableException) GoString() string {
13448	return s.String()
13449}
13450
13451func newErrorNoUpdateAvailableException(v protocol.ResponseMetadata) error {
13452	return &NoUpdateAvailableException{
13453		respMetadata: v,
13454	}
13455}
13456
13457// Code returns the exception type name.
13458func (s NoUpdateAvailableException) Code() string {
13459	return "NoUpdateAvailableException"
13460}
13461
13462// Message returns the exception's message.
13463func (s NoUpdateAvailableException) Message() string {
13464	if s.Message_ != nil {
13465		return *s.Message_
13466	}
13467	return ""
13468}
13469
13470// OrigErr always returns nil, satisfies awserr.Error interface.
13471func (s NoUpdateAvailableException) OrigErr() error {
13472	return nil
13473}
13474
13475func (s NoUpdateAvailableException) Error() string {
13476	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13477}
13478
13479// Status code returns the HTTP status code for the request's response error.
13480func (s NoUpdateAvailableException) StatusCode() int {
13481	return s.respMetadata.StatusCode
13482}
13483
13484// RequestID returns the service's response RequestID for request.
13485func (s NoUpdateAvailableException) RequestID() string {
13486	return s.respMetadata.RequestID
13487}
13488
13489// An object representing a constraint on task placement. For more information,
13490// see Task Placement Constraints (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html)
13491// in the Amazon Elastic Container Service Developer Guide.
13492//
13493// If you are using the Fargate launch type, task placement constraints are
13494// not supported.
13495type PlacementConstraint struct {
13496	_ struct{} `type:"structure"`
13497
13498	// A cluster query language expression to apply to the constraint. You cannot
13499	// specify an expression if the constraint type is distinctInstance. For more
13500	// information, see Cluster Query Language (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html)
13501	// in the Amazon Elastic Container Service Developer Guide.
13502	Expression *string `locationName:"expression" type:"string"`
13503
13504	// The type of constraint. Use distinctInstance to ensure that each task in
13505	// a particular group is running on a different container instance. Use memberOf
13506	// to restrict the selection to a group of valid candidates.
13507	Type *string `locationName:"type" type:"string" enum:"PlacementConstraintType"`
13508}
13509
13510// String returns the string representation
13511func (s PlacementConstraint) String() string {
13512	return awsutil.Prettify(s)
13513}
13514
13515// GoString returns the string representation
13516func (s PlacementConstraint) GoString() string {
13517	return s.String()
13518}
13519
13520// SetExpression sets the Expression field's value.
13521func (s *PlacementConstraint) SetExpression(v string) *PlacementConstraint {
13522	s.Expression = &v
13523	return s
13524}
13525
13526// SetType sets the Type field's value.
13527func (s *PlacementConstraint) SetType(v string) *PlacementConstraint {
13528	s.Type = &v
13529	return s
13530}
13531
13532// The task placement strategy for a task or service. For more information,
13533// see Task Placement Strategies (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html)
13534// in the Amazon Elastic Container Service Developer Guide.
13535type PlacementStrategy struct {
13536	_ struct{} `type:"structure"`
13537
13538	// The field to apply the placement strategy against. For the spread placement
13539	// strategy, valid values are instanceId (or host, which has the same effect),
13540	// or any platform or custom attribute that is applied to a container instance,
13541	// such as attribute:ecs.availability-zone. For the binpack placement strategy,
13542	// valid values are cpu and memory. For the random placement strategy, this
13543	// field is not used.
13544	Field *string `locationName:"field" type:"string"`
13545
13546	// The type of placement strategy. The random placement strategy randomly places
13547	// tasks on available candidates. The spread placement strategy spreads placement
13548	// across available candidates evenly based on the field parameter. The binpack
13549	// strategy places tasks on available candidates that have the least available
13550	// amount of the resource that is specified with the field parameter. For example,
13551	// if you binpack on memory, a task is placed on the instance with the least
13552	// amount of remaining memory (but still enough to run the task).
13553	Type *string `locationName:"type" type:"string" enum:"PlacementStrategyType"`
13554}
13555
13556// String returns the string representation
13557func (s PlacementStrategy) String() string {
13558	return awsutil.Prettify(s)
13559}
13560
13561// GoString returns the string representation
13562func (s PlacementStrategy) GoString() string {
13563	return s.String()
13564}
13565
13566// SetField sets the Field field's value.
13567func (s *PlacementStrategy) SetField(v string) *PlacementStrategy {
13568	s.Field = &v
13569	return s
13570}
13571
13572// SetType sets the Type field's value.
13573func (s *PlacementStrategy) SetType(v string) *PlacementStrategy {
13574	s.Type = &v
13575	return s
13576}
13577
13578// The devices that are available on the container instance. The only supported
13579// device type is a GPU.
13580type PlatformDevice struct {
13581	_ struct{} `type:"structure"`
13582
13583	// The ID for the GPU(s) on the container instance. The available GPU IDs can
13584	// also be obtained on the container instance in the /var/lib/ecs/gpu/nvidia_gpu_info.json
13585	// file.
13586	//
13587	// Id is a required field
13588	Id *string `locationName:"id" type:"string" required:"true"`
13589
13590	// The type of device that is available on the container instance. The only
13591	// supported value is GPU.
13592	//
13593	// Type is a required field
13594	Type *string `locationName:"type" type:"string" required:"true" enum:"PlatformDeviceType"`
13595}
13596
13597// String returns the string representation
13598func (s PlatformDevice) String() string {
13599	return awsutil.Prettify(s)
13600}
13601
13602// GoString returns the string representation
13603func (s PlatformDevice) GoString() string {
13604	return s.String()
13605}
13606
13607// Validate inspects the fields of the type to determine if they are valid.
13608func (s *PlatformDevice) Validate() error {
13609	invalidParams := request.ErrInvalidParams{Context: "PlatformDevice"}
13610	if s.Id == nil {
13611		invalidParams.Add(request.NewErrParamRequired("Id"))
13612	}
13613	if s.Type == nil {
13614		invalidParams.Add(request.NewErrParamRequired("Type"))
13615	}
13616
13617	if invalidParams.Len() > 0 {
13618		return invalidParams
13619	}
13620	return nil
13621}
13622
13623// SetId sets the Id field's value.
13624func (s *PlatformDevice) SetId(v string) *PlatformDevice {
13625	s.Id = &v
13626	return s
13627}
13628
13629// SetType sets the Type field's value.
13630func (s *PlatformDevice) SetType(v string) *PlatformDevice {
13631	s.Type = &v
13632	return s
13633}
13634
13635// The specified platform version does not satisfy the task definition's required
13636// capabilities.
13637type PlatformTaskDefinitionIncompatibilityException struct {
13638	_            struct{} `type:"structure"`
13639	respMetadata protocol.ResponseMetadata
13640
13641	Message_ *string `locationName:"message" type:"string"`
13642}
13643
13644// String returns the string representation
13645func (s PlatformTaskDefinitionIncompatibilityException) String() string {
13646	return awsutil.Prettify(s)
13647}
13648
13649// GoString returns the string representation
13650func (s PlatformTaskDefinitionIncompatibilityException) GoString() string {
13651	return s.String()
13652}
13653
13654func newErrorPlatformTaskDefinitionIncompatibilityException(v protocol.ResponseMetadata) error {
13655	return &PlatformTaskDefinitionIncompatibilityException{
13656		respMetadata: v,
13657	}
13658}
13659
13660// Code returns the exception type name.
13661func (s PlatformTaskDefinitionIncompatibilityException) Code() string {
13662	return "PlatformTaskDefinitionIncompatibilityException"
13663}
13664
13665// Message returns the exception's message.
13666func (s PlatformTaskDefinitionIncompatibilityException) Message() string {
13667	if s.Message_ != nil {
13668		return *s.Message_
13669	}
13670	return ""
13671}
13672
13673// OrigErr always returns nil, satisfies awserr.Error interface.
13674func (s PlatformTaskDefinitionIncompatibilityException) OrigErr() error {
13675	return nil
13676}
13677
13678func (s PlatformTaskDefinitionIncompatibilityException) Error() string {
13679	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13680}
13681
13682// Status code returns the HTTP status code for the request's response error.
13683func (s PlatformTaskDefinitionIncompatibilityException) StatusCode() int {
13684	return s.respMetadata.StatusCode
13685}
13686
13687// RequestID returns the service's response RequestID for request.
13688func (s PlatformTaskDefinitionIncompatibilityException) RequestID() string {
13689	return s.respMetadata.RequestID
13690}
13691
13692// The specified platform version does not exist.
13693type PlatformUnknownException struct {
13694	_            struct{} `type:"structure"`
13695	respMetadata protocol.ResponseMetadata
13696
13697	Message_ *string `locationName:"message" type:"string"`
13698}
13699
13700// String returns the string representation
13701func (s PlatformUnknownException) String() string {
13702	return awsutil.Prettify(s)
13703}
13704
13705// GoString returns the string representation
13706func (s PlatformUnknownException) GoString() string {
13707	return s.String()
13708}
13709
13710func newErrorPlatformUnknownException(v protocol.ResponseMetadata) error {
13711	return &PlatformUnknownException{
13712		respMetadata: v,
13713	}
13714}
13715
13716// Code returns the exception type name.
13717func (s PlatformUnknownException) Code() string {
13718	return "PlatformUnknownException"
13719}
13720
13721// Message returns the exception's message.
13722func (s PlatformUnknownException) Message() string {
13723	if s.Message_ != nil {
13724		return *s.Message_
13725	}
13726	return ""
13727}
13728
13729// OrigErr always returns nil, satisfies awserr.Error interface.
13730func (s PlatformUnknownException) OrigErr() error {
13731	return nil
13732}
13733
13734func (s PlatformUnknownException) Error() string {
13735	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
13736}
13737
13738// Status code returns the HTTP status code for the request's response error.
13739func (s PlatformUnknownException) StatusCode() int {
13740	return s.respMetadata.StatusCode
13741}
13742
13743// RequestID returns the service's response RequestID for request.
13744func (s PlatformUnknownException) RequestID() string {
13745	return s.respMetadata.RequestID
13746}
13747
13748// Port mappings allow containers to access ports on the host container instance
13749// to send or receive traffic. Port mappings are specified as part of the container
13750// definition.
13751//
13752// If you are using containers in a task with the awsvpc or host network mode,
13753// exposed ports should be specified using containerPort. The hostPort can be
13754// left blank or it must be the same value as the containerPort.
13755//
13756// After a task reaches the RUNNING status, manual and automatic host and container
13757// port assignments are visible in the networkBindings section of DescribeTasks
13758// API responses.
13759type PortMapping struct {
13760	_ struct{} `type:"structure"`
13761
13762	// The port number on the container that is bound to the user-specified or automatically
13763	// assigned host port.
13764	//
13765	// If you are using containers in a task with the awsvpc or host network mode,
13766	// exposed ports should be specified using containerPort.
13767	//
13768	// If you are using containers in a task with the bridge network mode and you
13769	// specify a container port and not a host port, your container automatically
13770	// receives a host port in the ephemeral port range. For more information, see
13771	// hostPort. Port mappings that are automatically assigned in this way do not
13772	// count toward the 100 reserved ports limit of a container instance.
13773	//
13774	// You cannot expose the same container port for multiple protocols. An error
13775	// will be returned if this is attempted.
13776	ContainerPort *int64 `locationName:"containerPort" type:"integer"`
13777
13778	// The port number on the container instance to reserve for your container.
13779	//
13780	// If you are using containers in a task with the awsvpc or host network mode,
13781	// the hostPort can either be left blank or set to the same value as the containerPort.
13782	//
13783	// If you are using containers in a task with the bridge network mode, you can
13784	// specify a non-reserved host port for your container port mapping, or you
13785	// can omit the hostPort (or set it to 0) while specifying a containerPort and
13786	// your container automatically receives a port in the ephemeral port range
13787	// for your container instance operating system and Docker version.
13788	//
13789	// The default ephemeral port range for Docker version 1.6.0 and later is listed
13790	// on the instance under /proc/sys/net/ipv4/ip_local_port_range. If this kernel
13791	// parameter is unavailable, the default ephemeral port range from 49153 through
13792	// 65535 is used. Do not attempt to specify a host port in the ephemeral port
13793	// range as these are reserved for automatic assignment. In general, ports below
13794	// 32768 are outside of the ephemeral port range.
13795	//
13796	// The default ephemeral port range from 49153 through 65535 is always used
13797	// for Docker versions before 1.6.0.
13798	//
13799	// The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376,
13800	// and the Amazon ECS container agent ports 51678-51680. Any host port that
13801	// was previously specified in a running task is also reserved while the task
13802	// is running (after a task stops, the host port is released). The current reserved
13803	// ports are displayed in the remainingResources of DescribeContainerInstances
13804	// output. A container instance can have up to 100 reserved ports at a time,
13805	// including the default reserved ports. Automatically assigned ports don't
13806	// count toward the 100 reserved ports limit.
13807	HostPort *int64 `locationName:"hostPort" type:"integer"`
13808
13809	// The protocol used for the port mapping. Valid values are tcp and udp. The
13810	// default is tcp.
13811	Protocol *string `locationName:"protocol" type:"string" enum:"TransportProtocol"`
13812}
13813
13814// String returns the string representation
13815func (s PortMapping) String() string {
13816	return awsutil.Prettify(s)
13817}
13818
13819// GoString returns the string representation
13820func (s PortMapping) GoString() string {
13821	return s.String()
13822}
13823
13824// SetContainerPort sets the ContainerPort field's value.
13825func (s *PortMapping) SetContainerPort(v int64) *PortMapping {
13826	s.ContainerPort = &v
13827	return s
13828}
13829
13830// SetHostPort sets the HostPort field's value.
13831func (s *PortMapping) SetHostPort(v int64) *PortMapping {
13832	s.HostPort = &v
13833	return s
13834}
13835
13836// SetProtocol sets the Protocol field's value.
13837func (s *PortMapping) SetProtocol(v string) *PortMapping {
13838	s.Protocol = &v
13839	return s
13840}
13841
13842// The configuration details for the App Mesh proxy.
13843//
13844// For tasks using the EC2 launch type, the container instances require at least
13845// version 1.26.0 of the container agent and at least version 1.26.0-1 of the
13846// ecs-init package to enable a proxy configuration. If your container instances
13847// are launched from the Amazon ECS-optimized AMI version 20190301 or later,
13848// then they contain the required versions of the container agent and ecs-init.
13849// For more information, see Amazon ECS-optimized Linux AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
13850// in the Amazon Elastic Container Service Developer Guide.
13851//
13852// For tasks using the Fargate launch type, the task or service requires platform
13853// version 1.3.0 or later.
13854type ProxyConfiguration struct {
13855	_ struct{} `type:"structure"`
13856
13857	// The name of the container that will serve as the App Mesh proxy.
13858	//
13859	// ContainerName is a required field
13860	ContainerName *string `locationName:"containerName" type:"string" required:"true"`
13861
13862	// The set of network configuration parameters to provide the Container Network
13863	// Interface (CNI) plugin, specified as key-value pairs.
13864	//
13865	//    * IgnoredUID - (Required) The user ID (UID) of the proxy container as
13866	//    defined by the user parameter in a container definition. This is used
13867	//    to ensure the proxy ignores its own traffic. If IgnoredGID is specified,
13868	//    this field can be empty.
13869	//
13870	//    * IgnoredGID - (Required) The group ID (GID) of the proxy container as
13871	//    defined by the user parameter in a container definition. This is used
13872	//    to ensure the proxy ignores its own traffic. If IgnoredUID is specified,
13873	//    this field can be empty.
13874	//
13875	//    * AppPorts - (Required) The list of ports that the application uses. Network
13876	//    traffic to these ports is forwarded to the ProxyIngressPort and ProxyEgressPort.
13877	//
13878	//    * ProxyIngressPort - (Required) Specifies the port that incoming traffic
13879	//    to the AppPorts is directed to.
13880	//
13881	//    * ProxyEgressPort - (Required) Specifies the port that outgoing traffic
13882	//    from the AppPorts is directed to.
13883	//
13884	//    * EgressIgnoredPorts - (Required) The egress traffic going to the specified
13885	//    ports is ignored and not redirected to the ProxyEgressPort. It can be
13886	//    an empty list.
13887	//
13888	//    * EgressIgnoredIPs - (Required) The egress traffic going to the specified
13889	//    IP addresses is ignored and not redirected to the ProxyEgressPort. It
13890	//    can be an empty list.
13891	Properties []*KeyValuePair `locationName:"properties" type:"list"`
13892
13893	// The proxy type. The only supported value is APPMESH.
13894	Type *string `locationName:"type" type:"string" enum:"ProxyConfigurationType"`
13895}
13896
13897// String returns the string representation
13898func (s ProxyConfiguration) String() string {
13899	return awsutil.Prettify(s)
13900}
13901
13902// GoString returns the string representation
13903func (s ProxyConfiguration) GoString() string {
13904	return s.String()
13905}
13906
13907// Validate inspects the fields of the type to determine if they are valid.
13908func (s *ProxyConfiguration) Validate() error {
13909	invalidParams := request.ErrInvalidParams{Context: "ProxyConfiguration"}
13910	if s.ContainerName == nil {
13911		invalidParams.Add(request.NewErrParamRequired("ContainerName"))
13912	}
13913
13914	if invalidParams.Len() > 0 {
13915		return invalidParams
13916	}
13917	return nil
13918}
13919
13920// SetContainerName sets the ContainerName field's value.
13921func (s *ProxyConfiguration) SetContainerName(v string) *ProxyConfiguration {
13922	s.ContainerName = &v
13923	return s
13924}
13925
13926// SetProperties sets the Properties field's value.
13927func (s *ProxyConfiguration) SetProperties(v []*KeyValuePair) *ProxyConfiguration {
13928	s.Properties = v
13929	return s
13930}
13931
13932// SetType sets the Type field's value.
13933func (s *ProxyConfiguration) SetType(v string) *ProxyConfiguration {
13934	s.Type = &v
13935	return s
13936}
13937
13938type PutAccountSettingDefaultInput struct {
13939	_ struct{} `type:"structure"`
13940
13941	// The resource name for which to modify the account setting. If serviceLongArnFormat
13942	// is specified, the ARN for your Amazon ECS services is affected. If taskLongArnFormat
13943	// is specified, the ARN and resource ID for your Amazon ECS tasks is affected.
13944	// If containerInstanceLongArnFormat is specified, the ARN and resource ID for
13945	// your Amazon ECS container instances is affected. If awsvpcTrunking is specified,
13946	// the ENI limit for your Amazon ECS container instances is affected. If containerInsights
13947	// is specified, the default setting for CloudWatch Container Insights for your
13948	// clusters is affected.
13949	//
13950	// Name is a required field
13951	Name *string `locationName:"name" type:"string" required:"true" enum:"SettingName"`
13952
13953	// The account setting value for the specified principal ARN. Accepted values
13954	// are enabled and disabled.
13955	//
13956	// Value is a required field
13957	Value *string `locationName:"value" type:"string" required:"true"`
13958}
13959
13960// String returns the string representation
13961func (s PutAccountSettingDefaultInput) String() string {
13962	return awsutil.Prettify(s)
13963}
13964
13965// GoString returns the string representation
13966func (s PutAccountSettingDefaultInput) GoString() string {
13967	return s.String()
13968}
13969
13970// Validate inspects the fields of the type to determine if they are valid.
13971func (s *PutAccountSettingDefaultInput) Validate() error {
13972	invalidParams := request.ErrInvalidParams{Context: "PutAccountSettingDefaultInput"}
13973	if s.Name == nil {
13974		invalidParams.Add(request.NewErrParamRequired("Name"))
13975	}
13976	if s.Value == nil {
13977		invalidParams.Add(request.NewErrParamRequired("Value"))
13978	}
13979
13980	if invalidParams.Len() > 0 {
13981		return invalidParams
13982	}
13983	return nil
13984}
13985
13986// SetName sets the Name field's value.
13987func (s *PutAccountSettingDefaultInput) SetName(v string) *PutAccountSettingDefaultInput {
13988	s.Name = &v
13989	return s
13990}
13991
13992// SetValue sets the Value field's value.
13993func (s *PutAccountSettingDefaultInput) SetValue(v string) *PutAccountSettingDefaultInput {
13994	s.Value = &v
13995	return s
13996}
13997
13998type PutAccountSettingDefaultOutput struct {
13999	_ struct{} `type:"structure"`
14000
14001	// The current account setting for a resource.
14002	Setting *Setting `locationName:"setting" type:"structure"`
14003}
14004
14005// String returns the string representation
14006func (s PutAccountSettingDefaultOutput) String() string {
14007	return awsutil.Prettify(s)
14008}
14009
14010// GoString returns the string representation
14011func (s PutAccountSettingDefaultOutput) GoString() string {
14012	return s.String()
14013}
14014
14015// SetSetting sets the Setting field's value.
14016func (s *PutAccountSettingDefaultOutput) SetSetting(v *Setting) *PutAccountSettingDefaultOutput {
14017	s.Setting = v
14018	return s
14019}
14020
14021type PutAccountSettingInput struct {
14022	_ struct{} `type:"structure"`
14023
14024	// The Amazon ECS resource name for which to modify the account setting. If
14025	// serviceLongArnFormat is specified, the ARN for your Amazon ECS services is
14026	// affected. If taskLongArnFormat is specified, the ARN and resource ID for
14027	// your Amazon ECS tasks is affected. If containerInstanceLongArnFormat is specified,
14028	// the ARN and resource ID for your Amazon ECS container instances is affected.
14029	// If awsvpcTrunking is specified, the elastic network interface (ENI) limit
14030	// for your Amazon ECS container instances is affected. If containerInsights
14031	// is specified, the default setting for CloudWatch Container Insights for your
14032	// clusters is affected.
14033	//
14034	// Name is a required field
14035	Name *string `locationName:"name" type:"string" required:"true" enum:"SettingName"`
14036
14037	// The ARN of the principal, which can be an IAM user, IAM role, or the root
14038	// user. If you specify the root user, it modifies the account setting for all
14039	// IAM users, IAM roles, and the root user of the account unless an IAM user
14040	// or role explicitly overrides these settings. If this field is omitted, the
14041	// setting is changed only for the authenticated user.
14042	PrincipalArn *string `locationName:"principalArn" type:"string"`
14043
14044	// The account setting value for the specified principal ARN. Accepted values
14045	// are enabled and disabled.
14046	//
14047	// Value is a required field
14048	Value *string `locationName:"value" type:"string" required:"true"`
14049}
14050
14051// String returns the string representation
14052func (s PutAccountSettingInput) String() string {
14053	return awsutil.Prettify(s)
14054}
14055
14056// GoString returns the string representation
14057func (s PutAccountSettingInput) GoString() string {
14058	return s.String()
14059}
14060
14061// Validate inspects the fields of the type to determine if they are valid.
14062func (s *PutAccountSettingInput) Validate() error {
14063	invalidParams := request.ErrInvalidParams{Context: "PutAccountSettingInput"}
14064	if s.Name == nil {
14065		invalidParams.Add(request.NewErrParamRequired("Name"))
14066	}
14067	if s.Value == nil {
14068		invalidParams.Add(request.NewErrParamRequired("Value"))
14069	}
14070
14071	if invalidParams.Len() > 0 {
14072		return invalidParams
14073	}
14074	return nil
14075}
14076
14077// SetName sets the Name field's value.
14078func (s *PutAccountSettingInput) SetName(v string) *PutAccountSettingInput {
14079	s.Name = &v
14080	return s
14081}
14082
14083// SetPrincipalArn sets the PrincipalArn field's value.
14084func (s *PutAccountSettingInput) SetPrincipalArn(v string) *PutAccountSettingInput {
14085	s.PrincipalArn = &v
14086	return s
14087}
14088
14089// SetValue sets the Value field's value.
14090func (s *PutAccountSettingInput) SetValue(v string) *PutAccountSettingInput {
14091	s.Value = &v
14092	return s
14093}
14094
14095type PutAccountSettingOutput struct {
14096	_ struct{} `type:"structure"`
14097
14098	// The current account setting for a resource.
14099	Setting *Setting `locationName:"setting" type:"structure"`
14100}
14101
14102// String returns the string representation
14103func (s PutAccountSettingOutput) String() string {
14104	return awsutil.Prettify(s)
14105}
14106
14107// GoString returns the string representation
14108func (s PutAccountSettingOutput) GoString() string {
14109	return s.String()
14110}
14111
14112// SetSetting sets the Setting field's value.
14113func (s *PutAccountSettingOutput) SetSetting(v *Setting) *PutAccountSettingOutput {
14114	s.Setting = v
14115	return s
14116}
14117
14118type PutAttributesInput struct {
14119	_ struct{} `type:"structure"`
14120
14121	// The attributes to apply to your resource. You can specify up to 10 custom
14122	// attributes per resource. You can specify up to 10 attributes in a single
14123	// call.
14124	//
14125	// Attributes is a required field
14126	Attributes []*Attribute `locationName:"attributes" type:"list" required:"true"`
14127
14128	// The short name or full Amazon Resource Name (ARN) of the cluster that contains
14129	// the resource to apply attributes. If you do not specify a cluster, the default
14130	// cluster is assumed.
14131	Cluster *string `locationName:"cluster" type:"string"`
14132}
14133
14134// String returns the string representation
14135func (s PutAttributesInput) String() string {
14136	return awsutil.Prettify(s)
14137}
14138
14139// GoString returns the string representation
14140func (s PutAttributesInput) GoString() string {
14141	return s.String()
14142}
14143
14144// Validate inspects the fields of the type to determine if they are valid.
14145func (s *PutAttributesInput) Validate() error {
14146	invalidParams := request.ErrInvalidParams{Context: "PutAttributesInput"}
14147	if s.Attributes == nil {
14148		invalidParams.Add(request.NewErrParamRequired("Attributes"))
14149	}
14150	if s.Attributes != nil {
14151		for i, v := range s.Attributes {
14152			if v == nil {
14153				continue
14154			}
14155			if err := v.Validate(); err != nil {
14156				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
14157			}
14158		}
14159	}
14160
14161	if invalidParams.Len() > 0 {
14162		return invalidParams
14163	}
14164	return nil
14165}
14166
14167// SetAttributes sets the Attributes field's value.
14168func (s *PutAttributesInput) SetAttributes(v []*Attribute) *PutAttributesInput {
14169	s.Attributes = v
14170	return s
14171}
14172
14173// SetCluster sets the Cluster field's value.
14174func (s *PutAttributesInput) SetCluster(v string) *PutAttributesInput {
14175	s.Cluster = &v
14176	return s
14177}
14178
14179type PutAttributesOutput struct {
14180	_ struct{} `type:"structure"`
14181
14182	// The attributes applied to your resource.
14183	Attributes []*Attribute `locationName:"attributes" type:"list"`
14184}
14185
14186// String returns the string representation
14187func (s PutAttributesOutput) String() string {
14188	return awsutil.Prettify(s)
14189}
14190
14191// GoString returns the string representation
14192func (s PutAttributesOutput) GoString() string {
14193	return s.String()
14194}
14195
14196// SetAttributes sets the Attributes field's value.
14197func (s *PutAttributesOutput) SetAttributes(v []*Attribute) *PutAttributesOutput {
14198	s.Attributes = v
14199	return s
14200}
14201
14202type PutClusterCapacityProvidersInput struct {
14203	_ struct{} `type:"structure"`
14204
14205	// The name of one or more capacity providers to associate with the cluster.
14206	//
14207	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
14208	// provider must already be created. New capacity providers can be created with
14209	// the CreateCapacityProvider API operation.
14210	//
14211	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
14212	// capacity providers. The AWS Fargate capacity providers are available to all
14213	// accounts and only need to be associated with a cluster to be used.
14214	//
14215	// CapacityProviders is a required field
14216	CapacityProviders []*string `locationName:"capacityProviders" type:"list" required:"true"`
14217
14218	// The short name or full Amazon Resource Name (ARN) of the cluster to modify
14219	// the capacity provider settings for. If you do not specify a cluster, the
14220	// default cluster is assumed.
14221	//
14222	// Cluster is a required field
14223	Cluster *string `locationName:"cluster" type:"string" required:"true"`
14224
14225	// The capacity provider strategy to use by default for the cluster.
14226	//
14227	// When creating a service or running a task on a cluster, if no capacity provider
14228	// or launch type is specified then the default capacity provider strategy for
14229	// the cluster is used.
14230	//
14231	// A capacity provider strategy consists of one or more capacity providers along
14232	// with the base and weight to assign to them. A capacity provider must be associated
14233	// with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders
14234	// API is used to associate a capacity provider with a cluster. Only capacity
14235	// providers with an ACTIVE or UPDATING status can be used.
14236	//
14237	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
14238	// provider must already be created. New capacity providers can be created with
14239	// the CreateCapacityProvider API operation.
14240	//
14241	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
14242	// capacity providers. The AWS Fargate capacity providers are available to all
14243	// accounts and only need to be associated with a cluster to be used.
14244	//
14245	// DefaultCapacityProviderStrategy is a required field
14246	DefaultCapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"defaultCapacityProviderStrategy" type:"list" required:"true"`
14247}
14248
14249// String returns the string representation
14250func (s PutClusterCapacityProvidersInput) String() string {
14251	return awsutil.Prettify(s)
14252}
14253
14254// GoString returns the string representation
14255func (s PutClusterCapacityProvidersInput) GoString() string {
14256	return s.String()
14257}
14258
14259// Validate inspects the fields of the type to determine if they are valid.
14260func (s *PutClusterCapacityProvidersInput) Validate() error {
14261	invalidParams := request.ErrInvalidParams{Context: "PutClusterCapacityProvidersInput"}
14262	if s.CapacityProviders == nil {
14263		invalidParams.Add(request.NewErrParamRequired("CapacityProviders"))
14264	}
14265	if s.Cluster == nil {
14266		invalidParams.Add(request.NewErrParamRequired("Cluster"))
14267	}
14268	if s.DefaultCapacityProviderStrategy == nil {
14269		invalidParams.Add(request.NewErrParamRequired("DefaultCapacityProviderStrategy"))
14270	}
14271	if s.DefaultCapacityProviderStrategy != nil {
14272		for i, v := range s.DefaultCapacityProviderStrategy {
14273			if v == nil {
14274				continue
14275			}
14276			if err := v.Validate(); err != nil {
14277				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultCapacityProviderStrategy", i), err.(request.ErrInvalidParams))
14278			}
14279		}
14280	}
14281
14282	if invalidParams.Len() > 0 {
14283		return invalidParams
14284	}
14285	return nil
14286}
14287
14288// SetCapacityProviders sets the CapacityProviders field's value.
14289func (s *PutClusterCapacityProvidersInput) SetCapacityProviders(v []*string) *PutClusterCapacityProvidersInput {
14290	s.CapacityProviders = v
14291	return s
14292}
14293
14294// SetCluster sets the Cluster field's value.
14295func (s *PutClusterCapacityProvidersInput) SetCluster(v string) *PutClusterCapacityProvidersInput {
14296	s.Cluster = &v
14297	return s
14298}
14299
14300// SetDefaultCapacityProviderStrategy sets the DefaultCapacityProviderStrategy field's value.
14301func (s *PutClusterCapacityProvidersInput) SetDefaultCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *PutClusterCapacityProvidersInput {
14302	s.DefaultCapacityProviderStrategy = v
14303	return s
14304}
14305
14306type PutClusterCapacityProvidersOutput struct {
14307	_ struct{} `type:"structure"`
14308
14309	// A regional grouping of one or more container instances on which you can run
14310	// task requests. Each account receives a default cluster the first time you
14311	// use the Amazon ECS service, but you may also create other clusters. Clusters
14312	// may contain more than one instance type simultaneously.
14313	Cluster *Cluster `locationName:"cluster" type:"structure"`
14314}
14315
14316// String returns the string representation
14317func (s PutClusterCapacityProvidersOutput) String() string {
14318	return awsutil.Prettify(s)
14319}
14320
14321// GoString returns the string representation
14322func (s PutClusterCapacityProvidersOutput) GoString() string {
14323	return s.String()
14324}
14325
14326// SetCluster sets the Cluster field's value.
14327func (s *PutClusterCapacityProvidersOutput) SetCluster(v *Cluster) *PutClusterCapacityProvidersOutput {
14328	s.Cluster = v
14329	return s
14330}
14331
14332type RegisterContainerInstanceInput struct {
14333	_ struct{} `type:"structure"`
14334
14335	// The container instance attributes that this container instance supports.
14336	Attributes []*Attribute `locationName:"attributes" type:"list"`
14337
14338	// The short name or full Amazon Resource Name (ARN) of the cluster with which
14339	// to register your container instance. If you do not specify a cluster, the
14340	// default cluster is assumed.
14341	Cluster *string `locationName:"cluster" type:"string"`
14342
14343	// The ARN of the container instance (if it was previously registered).
14344	ContainerInstanceArn *string `locationName:"containerInstanceArn" type:"string"`
14345
14346	// The instance identity document for the EC2 instance to register. This document
14347	// can be found by running the following command from the instance: curl http://169.254.169.254/latest/dynamic/instance-identity/document/
14348	InstanceIdentityDocument *string `locationName:"instanceIdentityDocument" type:"string"`
14349
14350	// The instance identity document signature for the EC2 instance to register.
14351	// This signature can be found by running the following command from the instance:
14352	// curl http://169.254.169.254/latest/dynamic/instance-identity/signature/
14353	InstanceIdentityDocumentSignature *string `locationName:"instanceIdentityDocumentSignature" type:"string"`
14354
14355	// The devices that are available on the container instance. The only supported
14356	// device type is a GPU.
14357	PlatformDevices []*PlatformDevice `locationName:"platformDevices" type:"list"`
14358
14359	// The metadata that you apply to the container instance to help you categorize
14360	// and organize them. Each tag consists of a key and an optional value, both
14361	// of which you define.
14362	//
14363	// The following basic restrictions apply to tags:
14364	//
14365	//    * Maximum number of tags per resource - 50
14366	//
14367	//    * For each resource, each tag key must be unique, and each tag key can
14368	//    have only one value.
14369	//
14370	//    * Maximum key length - 128 Unicode characters in UTF-8
14371	//
14372	//    * Maximum value length - 256 Unicode characters in UTF-8
14373	//
14374	//    * If your tagging schema is used across multiple services and resources,
14375	//    remember that other services may have restrictions on allowed characters.
14376	//    Generally allowed characters are: letters, numbers, and spaces representable
14377	//    in UTF-8, and the following characters: + - = . _ : / @.
14378	//
14379	//    * Tag keys and values are case-sensitive.
14380	//
14381	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
14382	//    as a prefix for either keys or values as it is reserved for AWS use. You
14383	//    cannot edit or delete tag keys or values with this prefix. Tags with this
14384	//    prefix do not count against your tags per resource limit.
14385	Tags []*Tag `locationName:"tags" type:"list"`
14386
14387	// The resources available on the instance.
14388	TotalResources []*Resource `locationName:"totalResources" type:"list"`
14389
14390	// The version information for the Amazon ECS container agent and Docker daemon
14391	// running on the container instance.
14392	VersionInfo *VersionInfo `locationName:"versionInfo" type:"structure"`
14393}
14394
14395// String returns the string representation
14396func (s RegisterContainerInstanceInput) String() string {
14397	return awsutil.Prettify(s)
14398}
14399
14400// GoString returns the string representation
14401func (s RegisterContainerInstanceInput) GoString() string {
14402	return s.String()
14403}
14404
14405// Validate inspects the fields of the type to determine if they are valid.
14406func (s *RegisterContainerInstanceInput) Validate() error {
14407	invalidParams := request.ErrInvalidParams{Context: "RegisterContainerInstanceInput"}
14408	if s.Attributes != nil {
14409		for i, v := range s.Attributes {
14410			if v == nil {
14411				continue
14412			}
14413			if err := v.Validate(); err != nil {
14414				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
14415			}
14416		}
14417	}
14418	if s.PlatformDevices != nil {
14419		for i, v := range s.PlatformDevices {
14420			if v == nil {
14421				continue
14422			}
14423			if err := v.Validate(); err != nil {
14424				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "PlatformDevices", i), err.(request.ErrInvalidParams))
14425			}
14426		}
14427	}
14428	if s.Tags != nil {
14429		for i, v := range s.Tags {
14430			if v == nil {
14431				continue
14432			}
14433			if err := v.Validate(); err != nil {
14434				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
14435			}
14436		}
14437	}
14438
14439	if invalidParams.Len() > 0 {
14440		return invalidParams
14441	}
14442	return nil
14443}
14444
14445// SetAttributes sets the Attributes field's value.
14446func (s *RegisterContainerInstanceInput) SetAttributes(v []*Attribute) *RegisterContainerInstanceInput {
14447	s.Attributes = v
14448	return s
14449}
14450
14451// SetCluster sets the Cluster field's value.
14452func (s *RegisterContainerInstanceInput) SetCluster(v string) *RegisterContainerInstanceInput {
14453	s.Cluster = &v
14454	return s
14455}
14456
14457// SetContainerInstanceArn sets the ContainerInstanceArn field's value.
14458func (s *RegisterContainerInstanceInput) SetContainerInstanceArn(v string) *RegisterContainerInstanceInput {
14459	s.ContainerInstanceArn = &v
14460	return s
14461}
14462
14463// SetInstanceIdentityDocument sets the InstanceIdentityDocument field's value.
14464func (s *RegisterContainerInstanceInput) SetInstanceIdentityDocument(v string) *RegisterContainerInstanceInput {
14465	s.InstanceIdentityDocument = &v
14466	return s
14467}
14468
14469// SetInstanceIdentityDocumentSignature sets the InstanceIdentityDocumentSignature field's value.
14470func (s *RegisterContainerInstanceInput) SetInstanceIdentityDocumentSignature(v string) *RegisterContainerInstanceInput {
14471	s.InstanceIdentityDocumentSignature = &v
14472	return s
14473}
14474
14475// SetPlatformDevices sets the PlatformDevices field's value.
14476func (s *RegisterContainerInstanceInput) SetPlatformDevices(v []*PlatformDevice) *RegisterContainerInstanceInput {
14477	s.PlatformDevices = v
14478	return s
14479}
14480
14481// SetTags sets the Tags field's value.
14482func (s *RegisterContainerInstanceInput) SetTags(v []*Tag) *RegisterContainerInstanceInput {
14483	s.Tags = v
14484	return s
14485}
14486
14487// SetTotalResources sets the TotalResources field's value.
14488func (s *RegisterContainerInstanceInput) SetTotalResources(v []*Resource) *RegisterContainerInstanceInput {
14489	s.TotalResources = v
14490	return s
14491}
14492
14493// SetVersionInfo sets the VersionInfo field's value.
14494func (s *RegisterContainerInstanceInput) SetVersionInfo(v *VersionInfo) *RegisterContainerInstanceInput {
14495	s.VersionInfo = v
14496	return s
14497}
14498
14499type RegisterContainerInstanceOutput struct {
14500	_ struct{} `type:"structure"`
14501
14502	// The container instance that was registered.
14503	ContainerInstance *ContainerInstance `locationName:"containerInstance" type:"structure"`
14504}
14505
14506// String returns the string representation
14507func (s RegisterContainerInstanceOutput) String() string {
14508	return awsutil.Prettify(s)
14509}
14510
14511// GoString returns the string representation
14512func (s RegisterContainerInstanceOutput) GoString() string {
14513	return s.String()
14514}
14515
14516// SetContainerInstance sets the ContainerInstance field's value.
14517func (s *RegisterContainerInstanceOutput) SetContainerInstance(v *ContainerInstance) *RegisterContainerInstanceOutput {
14518	s.ContainerInstance = v
14519	return s
14520}
14521
14522type RegisterTaskDefinitionInput struct {
14523	_ struct{} `type:"structure"`
14524
14525	// A list of container definitions in JSON format that describe the different
14526	// containers that make up your task.
14527	//
14528	// ContainerDefinitions is a required field
14529	ContainerDefinitions []*ContainerDefinition `locationName:"containerDefinitions" type:"list" required:"true"`
14530
14531	// The number of CPU units used by the task. It can be expressed as an integer
14532	// using CPU units, for example 1024, or as a string using vCPUs, for example
14533	// 1 vCPU or 1 vcpu, in a task definition. String values are converted to an
14534	// integer indicating the CPU units when the task definition is registered.
14535	//
14536	// Task-level CPU and memory parameters are ignored for Windows containers.
14537	// We recommend specifying container-level resources for Windows containers.
14538	//
14539	// If you are using the EC2 launch type, this field is optional. Supported values
14540	// are between 128 CPU units (0.125 vCPUs) and 10240 CPU units (10 vCPUs).
14541	//
14542	// If you are using the Fargate launch type, this field is required and you
14543	// must use one of the following values, which determines your range of supported
14544	// values for the memory parameter:
14545	//
14546	//    * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB),
14547	//    2048 (2 GB)
14548	//
14549	//    * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072
14550	//    (3 GB), 4096 (4 GB)
14551	//
14552	//    * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096
14553	//    (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
14554	//
14555	//    * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384
14556	//    (16 GB) in increments of 1024 (1 GB)
14557	//
14558	//    * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720
14559	//    (30 GB) in increments of 1024 (1 GB)
14560	Cpu *string `locationName:"cpu" type:"string"`
14561
14562	// The Amazon Resource Name (ARN) of the task execution role that the Amazon
14563	// ECS container agent and the Docker daemon can assume.
14564	ExecutionRoleArn *string `locationName:"executionRoleArn" type:"string"`
14565
14566	// You must specify a family for a task definition, which allows you to track
14567	// multiple versions of the same task definition. The family is used as a name
14568	// for your task definition. Up to 255 letters (uppercase and lowercase), numbers,
14569	// and hyphens are allowed.
14570	//
14571	// Family is a required field
14572	Family *string `locationName:"family" type:"string" required:"true"`
14573
14574	// The Elastic Inference accelerators to use for the containers in the task.
14575	InferenceAccelerators []*InferenceAccelerator `locationName:"inferenceAccelerators" type:"list"`
14576
14577	// The IPC resource namespace to use for the containers in the task. The valid
14578	// values are host, task, or none. If host is specified, then all containers
14579	// within the tasks that specified the host IPC mode on the same container instance
14580	// share the same IPC resources with the host Amazon EC2 instance. If task is
14581	// specified, all containers within the specified task share the same IPC resources.
14582	// If none is specified, then IPC resources within the containers of a task
14583	// are private and not shared with other containers in a task or on the container
14584	// instance. If no value is specified, then the IPC resource namespace sharing
14585	// depends on the Docker daemon setting on the container instance. For more
14586	// information, see IPC settings (https://docs.docker.com/engine/reference/run/#ipc-settings---ipc)
14587	// in the Docker run reference.
14588	//
14589	// If the host IPC mode is used, be aware that there is a heightened risk of
14590	// undesired IPC namespace expose. For more information, see Docker security
14591	// (https://docs.docker.com/engine/security/security/).
14592	//
14593	// If you are setting namespaced kernel parameters using systemControls for
14594	// the containers in the task, the following will apply to your IPC resource
14595	// namespace. For more information, see System Controls (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html)
14596	// in the Amazon Elastic Container Service Developer Guide.
14597	//
14598	//    * For tasks that use the host IPC mode, IPC namespace related systemControls
14599	//    are not supported.
14600	//
14601	//    * For tasks that use the task IPC mode, IPC namespace related systemControls
14602	//    will apply to all containers within a task.
14603	//
14604	// This parameter is not supported for Windows containers or tasks using the
14605	// Fargate launch type.
14606	IpcMode *string `locationName:"ipcMode" type:"string" enum:"IpcMode"`
14607
14608	// The amount of memory (in MiB) used by the task. It can be expressed as an
14609	// integer using MiB, for example 1024, or as a string using GB, for example
14610	// 1GB or 1 GB, in a task definition. String values are converted to an integer
14611	// indicating the MiB when the task definition is registered.
14612	//
14613	// Task-level CPU and memory parameters are ignored for Windows containers.
14614	// We recommend specifying container-level resources for Windows containers.
14615	//
14616	// If using the EC2 launch type, this field is optional.
14617	//
14618	// If using the Fargate launch type, this field is required and you must use
14619	// one of the following values, which determines your range of supported values
14620	// for the cpu parameter:
14621	//
14622	//    * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25
14623	//    vCPU)
14624	//
14625	//    * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values:
14626	//    512 (.5 vCPU)
14627	//
14628	//    * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
14629	//    (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)
14630	//
14631	//    * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
14632	//    Available cpu values: 2048 (2 vCPU)
14633	//
14634	//    * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) -
14635	//    Available cpu values: 4096 (4 vCPU)
14636	Memory *string `locationName:"memory" type:"string"`
14637
14638	// The Docker networking mode to use for the containers in the task. The valid
14639	// values are none, bridge, awsvpc, and host. The default Docker network mode
14640	// is bridge. If you are using the Fargate launch type, the awsvpc network mode
14641	// is required. If you are using the EC2 launch type, any network mode can be
14642	// used. If the network mode is set to none, you cannot specify port mappings
14643	// in your container definitions, and the tasks containers do not have external
14644	// connectivity. The host and awsvpc network modes offer the highest networking
14645	// performance for containers because they use the EC2 network stack instead
14646	// of the virtualized network stack provided by the bridge mode.
14647	//
14648	// With the host and awsvpc network modes, exposed container ports are mapped
14649	// directly to the corresponding host port (for the host network mode) or the
14650	// attached elastic network interface port (for the awsvpc network mode), so
14651	// you cannot take advantage of dynamic host port mappings.
14652	//
14653	// If the network mode is awsvpc, the task is allocated an elastic network interface,
14654	// and you must specify a NetworkConfiguration value when you create a service
14655	// or run a task with the task definition. For more information, see Task Networking
14656	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
14657	// in the Amazon Elastic Container Service Developer Guide.
14658	//
14659	// Currently, only Amazon ECS-optimized AMIs, other Amazon Linux variants with
14660	// the ecs-init package, or AWS Fargate infrastructure support the awsvpc network
14661	// mode.
14662	//
14663	// If the network mode is host, you cannot run multiple instantiations of the
14664	// same task on a single container instance when port mappings are used.
14665	//
14666	// Docker for Windows uses different network modes than Docker for Linux. When
14667	// you register a task definition with Windows containers, you must not specify
14668	// a network mode. If you use the console to register a task definition with
14669	// Windows containers, you must choose the <default> network mode object.
14670	//
14671	// For more information, see Network settings (https://docs.docker.com/engine/reference/run/#network-settings)
14672	// in the Docker run reference.
14673	NetworkMode *string `locationName:"networkMode" type:"string" enum:"NetworkMode"`
14674
14675	// The process namespace to use for the containers in the task. The valid values
14676	// are host or task. If host is specified, then all containers within the tasks
14677	// that specified the host PID mode on the same container instance share the
14678	// same process namespace with the host Amazon EC2 instance. If task is specified,
14679	// all containers within the specified task share the same process namespace.
14680	// If no value is specified, the default is a private namespace. For more information,
14681	// see PID settings (https://docs.docker.com/engine/reference/run/#pid-settings---pid)
14682	// in the Docker run reference.
14683	//
14684	// If the host PID mode is used, be aware that there is a heightened risk of
14685	// undesired process namespace expose. For more information, see Docker security
14686	// (https://docs.docker.com/engine/security/security/).
14687	//
14688	// This parameter is not supported for Windows containers or tasks using the
14689	// Fargate launch type.
14690	PidMode *string `locationName:"pidMode" type:"string" enum:"PidMode"`
14691
14692	// An array of placement constraint objects to use for the task. You can specify
14693	// a maximum of 10 constraints per task (this limit includes constraints in
14694	// the task definition and those specified at runtime).
14695	PlacementConstraints []*TaskDefinitionPlacementConstraint `locationName:"placementConstraints" type:"list"`
14696
14697	// The configuration details for the App Mesh proxy.
14698	//
14699	// For tasks using the EC2 launch type, the container instances require at least
14700	// version 1.26.0 of the container agent and at least version 1.26.0-1 of the
14701	// ecs-init package to enable a proxy configuration. If your container instances
14702	// are launched from the Amazon ECS-optimized AMI version 20190301 or later,
14703	// then they contain the required versions of the container agent and ecs-init.
14704	// For more information, see Amazon ECS-optimized Linux AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
14705	// in the Amazon Elastic Container Service Developer Guide.
14706	//
14707	// For tasks using the Fargate launch type, the task or service requires platform
14708	// version 1.3.0 or later.
14709	ProxyConfiguration *ProxyConfiguration `locationName:"proxyConfiguration" type:"structure"`
14710
14711	// The launch type required by the task. If no value is specified, it defaults
14712	// to EC2.
14713	RequiresCompatibilities []*string `locationName:"requiresCompatibilities" type:"list"`
14714
14715	// The metadata that you apply to the task definition to help you categorize
14716	// and organize them. Each tag consists of a key and an optional value, both
14717	// of which you define.
14718	//
14719	// The following basic restrictions apply to tags:
14720	//
14721	//    * Maximum number of tags per resource - 50
14722	//
14723	//    * For each resource, each tag key must be unique, and each tag key can
14724	//    have only one value.
14725	//
14726	//    * Maximum key length - 128 Unicode characters in UTF-8
14727	//
14728	//    * Maximum value length - 256 Unicode characters in UTF-8
14729	//
14730	//    * If your tagging schema is used across multiple services and resources,
14731	//    remember that other services may have restrictions on allowed characters.
14732	//    Generally allowed characters are: letters, numbers, and spaces representable
14733	//    in UTF-8, and the following characters: + - = . _ : / @.
14734	//
14735	//    * Tag keys and values are case-sensitive.
14736	//
14737	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
14738	//    as a prefix for either keys or values as it is reserved for AWS use. You
14739	//    cannot edit or delete tag keys or values with this prefix. Tags with this
14740	//    prefix do not count against your tags per resource limit.
14741	Tags []*Tag `locationName:"tags" type:"list"`
14742
14743	// The short name or full Amazon Resource Name (ARN) of the IAM role that containers
14744	// in this task can assume. All containers in this task are granted the permissions
14745	// that are specified in this role. For more information, see IAM Roles for
14746	// Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)
14747	// in the Amazon Elastic Container Service Developer Guide.
14748	TaskRoleArn *string `locationName:"taskRoleArn" type:"string"`
14749
14750	// A list of volume definitions in JSON format that containers in your task
14751	// may use.
14752	Volumes []*Volume `locationName:"volumes" type:"list"`
14753}
14754
14755// String returns the string representation
14756func (s RegisterTaskDefinitionInput) String() string {
14757	return awsutil.Prettify(s)
14758}
14759
14760// GoString returns the string representation
14761func (s RegisterTaskDefinitionInput) GoString() string {
14762	return s.String()
14763}
14764
14765// Validate inspects the fields of the type to determine if they are valid.
14766func (s *RegisterTaskDefinitionInput) Validate() error {
14767	invalidParams := request.ErrInvalidParams{Context: "RegisterTaskDefinitionInput"}
14768	if s.ContainerDefinitions == nil {
14769		invalidParams.Add(request.NewErrParamRequired("ContainerDefinitions"))
14770	}
14771	if s.Family == nil {
14772		invalidParams.Add(request.NewErrParamRequired("Family"))
14773	}
14774	if s.ContainerDefinitions != nil {
14775		for i, v := range s.ContainerDefinitions {
14776			if v == nil {
14777				continue
14778			}
14779			if err := v.Validate(); err != nil {
14780				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContainerDefinitions", i), err.(request.ErrInvalidParams))
14781			}
14782		}
14783	}
14784	if s.InferenceAccelerators != nil {
14785		for i, v := range s.InferenceAccelerators {
14786			if v == nil {
14787				continue
14788			}
14789			if err := v.Validate(); err != nil {
14790				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "InferenceAccelerators", i), err.(request.ErrInvalidParams))
14791			}
14792		}
14793	}
14794	if s.ProxyConfiguration != nil {
14795		if err := s.ProxyConfiguration.Validate(); err != nil {
14796			invalidParams.AddNested("ProxyConfiguration", err.(request.ErrInvalidParams))
14797		}
14798	}
14799	if s.Tags != nil {
14800		for i, v := range s.Tags {
14801			if v == nil {
14802				continue
14803			}
14804			if err := v.Validate(); err != nil {
14805				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
14806			}
14807		}
14808	}
14809	if s.Volumes != nil {
14810		for i, v := range s.Volumes {
14811			if v == nil {
14812				continue
14813			}
14814			if err := v.Validate(); err != nil {
14815				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Volumes", i), err.(request.ErrInvalidParams))
14816			}
14817		}
14818	}
14819
14820	if invalidParams.Len() > 0 {
14821		return invalidParams
14822	}
14823	return nil
14824}
14825
14826// SetContainerDefinitions sets the ContainerDefinitions field's value.
14827func (s *RegisterTaskDefinitionInput) SetContainerDefinitions(v []*ContainerDefinition) *RegisterTaskDefinitionInput {
14828	s.ContainerDefinitions = v
14829	return s
14830}
14831
14832// SetCpu sets the Cpu field's value.
14833func (s *RegisterTaskDefinitionInput) SetCpu(v string) *RegisterTaskDefinitionInput {
14834	s.Cpu = &v
14835	return s
14836}
14837
14838// SetExecutionRoleArn sets the ExecutionRoleArn field's value.
14839func (s *RegisterTaskDefinitionInput) SetExecutionRoleArn(v string) *RegisterTaskDefinitionInput {
14840	s.ExecutionRoleArn = &v
14841	return s
14842}
14843
14844// SetFamily sets the Family field's value.
14845func (s *RegisterTaskDefinitionInput) SetFamily(v string) *RegisterTaskDefinitionInput {
14846	s.Family = &v
14847	return s
14848}
14849
14850// SetInferenceAccelerators sets the InferenceAccelerators field's value.
14851func (s *RegisterTaskDefinitionInput) SetInferenceAccelerators(v []*InferenceAccelerator) *RegisterTaskDefinitionInput {
14852	s.InferenceAccelerators = v
14853	return s
14854}
14855
14856// SetIpcMode sets the IpcMode field's value.
14857func (s *RegisterTaskDefinitionInput) SetIpcMode(v string) *RegisterTaskDefinitionInput {
14858	s.IpcMode = &v
14859	return s
14860}
14861
14862// SetMemory sets the Memory field's value.
14863func (s *RegisterTaskDefinitionInput) SetMemory(v string) *RegisterTaskDefinitionInput {
14864	s.Memory = &v
14865	return s
14866}
14867
14868// SetNetworkMode sets the NetworkMode field's value.
14869func (s *RegisterTaskDefinitionInput) SetNetworkMode(v string) *RegisterTaskDefinitionInput {
14870	s.NetworkMode = &v
14871	return s
14872}
14873
14874// SetPidMode sets the PidMode field's value.
14875func (s *RegisterTaskDefinitionInput) SetPidMode(v string) *RegisterTaskDefinitionInput {
14876	s.PidMode = &v
14877	return s
14878}
14879
14880// SetPlacementConstraints sets the PlacementConstraints field's value.
14881func (s *RegisterTaskDefinitionInput) SetPlacementConstraints(v []*TaskDefinitionPlacementConstraint) *RegisterTaskDefinitionInput {
14882	s.PlacementConstraints = v
14883	return s
14884}
14885
14886// SetProxyConfiguration sets the ProxyConfiguration field's value.
14887func (s *RegisterTaskDefinitionInput) SetProxyConfiguration(v *ProxyConfiguration) *RegisterTaskDefinitionInput {
14888	s.ProxyConfiguration = v
14889	return s
14890}
14891
14892// SetRequiresCompatibilities sets the RequiresCompatibilities field's value.
14893func (s *RegisterTaskDefinitionInput) SetRequiresCompatibilities(v []*string) *RegisterTaskDefinitionInput {
14894	s.RequiresCompatibilities = v
14895	return s
14896}
14897
14898// SetTags sets the Tags field's value.
14899func (s *RegisterTaskDefinitionInput) SetTags(v []*Tag) *RegisterTaskDefinitionInput {
14900	s.Tags = v
14901	return s
14902}
14903
14904// SetTaskRoleArn sets the TaskRoleArn field's value.
14905func (s *RegisterTaskDefinitionInput) SetTaskRoleArn(v string) *RegisterTaskDefinitionInput {
14906	s.TaskRoleArn = &v
14907	return s
14908}
14909
14910// SetVolumes sets the Volumes field's value.
14911func (s *RegisterTaskDefinitionInput) SetVolumes(v []*Volume) *RegisterTaskDefinitionInput {
14912	s.Volumes = v
14913	return s
14914}
14915
14916type RegisterTaskDefinitionOutput struct {
14917	_ struct{} `type:"structure"`
14918
14919	// The list of tags associated with the task definition.
14920	Tags []*Tag `locationName:"tags" type:"list"`
14921
14922	// The full description of the registered task definition.
14923	TaskDefinition *TaskDefinition `locationName:"taskDefinition" type:"structure"`
14924}
14925
14926// String returns the string representation
14927func (s RegisterTaskDefinitionOutput) String() string {
14928	return awsutil.Prettify(s)
14929}
14930
14931// GoString returns the string representation
14932func (s RegisterTaskDefinitionOutput) GoString() string {
14933	return s.String()
14934}
14935
14936// SetTags sets the Tags field's value.
14937func (s *RegisterTaskDefinitionOutput) SetTags(v []*Tag) *RegisterTaskDefinitionOutput {
14938	s.Tags = v
14939	return s
14940}
14941
14942// SetTaskDefinition sets the TaskDefinition field's value.
14943func (s *RegisterTaskDefinitionOutput) SetTaskDefinition(v *TaskDefinition) *RegisterTaskDefinitionOutput {
14944	s.TaskDefinition = v
14945	return s
14946}
14947
14948// The repository credentials for private registry authentication.
14949type RepositoryCredentials struct {
14950	_ struct{} `type:"structure"`
14951
14952	// The Amazon Resource Name (ARN) of the secret containing the private repository
14953	// credentials.
14954	//
14955	// When you are using the Amazon ECS API, AWS CLI, or AWS SDK, if the secret
14956	// exists in the same Region as the task that you are launching then you can
14957	// use either the full ARN or the name of the secret. When you are using the
14958	// AWS Management Console, you must specify the full ARN of the secret.
14959	//
14960	// CredentialsParameter is a required field
14961	CredentialsParameter *string `locationName:"credentialsParameter" type:"string" required:"true"`
14962}
14963
14964// String returns the string representation
14965func (s RepositoryCredentials) String() string {
14966	return awsutil.Prettify(s)
14967}
14968
14969// GoString returns the string representation
14970func (s RepositoryCredentials) GoString() string {
14971	return s.String()
14972}
14973
14974// Validate inspects the fields of the type to determine if they are valid.
14975func (s *RepositoryCredentials) Validate() error {
14976	invalidParams := request.ErrInvalidParams{Context: "RepositoryCredentials"}
14977	if s.CredentialsParameter == nil {
14978		invalidParams.Add(request.NewErrParamRequired("CredentialsParameter"))
14979	}
14980
14981	if invalidParams.Len() > 0 {
14982		return invalidParams
14983	}
14984	return nil
14985}
14986
14987// SetCredentialsParameter sets the CredentialsParameter field's value.
14988func (s *RepositoryCredentials) SetCredentialsParameter(v string) *RepositoryCredentials {
14989	s.CredentialsParameter = &v
14990	return s
14991}
14992
14993// Describes the resources available for a container instance.
14994type Resource struct {
14995	_ struct{} `type:"structure"`
14996
14997	// When the doubleValue type is set, the value of the resource must be a double
14998	// precision floating-point type.
14999	DoubleValue *float64 `locationName:"doubleValue" type:"double"`
15000
15001	// When the integerValue type is set, the value of the resource must be an integer.
15002	IntegerValue *int64 `locationName:"integerValue" type:"integer"`
15003
15004	// When the longValue type is set, the value of the resource must be an extended
15005	// precision floating-point type.
15006	LongValue *int64 `locationName:"longValue" type:"long"`
15007
15008	// The name of the resource, such as CPU, MEMORY, PORTS, PORTS_UDP, or a user-defined
15009	// resource.
15010	Name *string `locationName:"name" type:"string"`
15011
15012	// When the stringSetValue type is set, the value of the resource must be a
15013	// string type.
15014	StringSetValue []*string `locationName:"stringSetValue" type:"list"`
15015
15016	// The type of the resource, such as INTEGER, DOUBLE, LONG, or STRINGSET.
15017	Type *string `locationName:"type" type:"string"`
15018}
15019
15020// String returns the string representation
15021func (s Resource) String() string {
15022	return awsutil.Prettify(s)
15023}
15024
15025// GoString returns the string representation
15026func (s Resource) GoString() string {
15027	return s.String()
15028}
15029
15030// SetDoubleValue sets the DoubleValue field's value.
15031func (s *Resource) SetDoubleValue(v float64) *Resource {
15032	s.DoubleValue = &v
15033	return s
15034}
15035
15036// SetIntegerValue sets the IntegerValue field's value.
15037func (s *Resource) SetIntegerValue(v int64) *Resource {
15038	s.IntegerValue = &v
15039	return s
15040}
15041
15042// SetLongValue sets the LongValue field's value.
15043func (s *Resource) SetLongValue(v int64) *Resource {
15044	s.LongValue = &v
15045	return s
15046}
15047
15048// SetName sets the Name field's value.
15049func (s *Resource) SetName(v string) *Resource {
15050	s.Name = &v
15051	return s
15052}
15053
15054// SetStringSetValue sets the StringSetValue field's value.
15055func (s *Resource) SetStringSetValue(v []*string) *Resource {
15056	s.StringSetValue = v
15057	return s
15058}
15059
15060// SetType sets the Type field's value.
15061func (s *Resource) SetType(v string) *Resource {
15062	s.Type = &v
15063	return s
15064}
15065
15066// The specified resource is in-use and cannot be removed.
15067type ResourceInUseException struct {
15068	_            struct{} `type:"structure"`
15069	respMetadata protocol.ResponseMetadata
15070
15071	Message_ *string `locationName:"message" type:"string"`
15072}
15073
15074// String returns the string representation
15075func (s ResourceInUseException) String() string {
15076	return awsutil.Prettify(s)
15077}
15078
15079// GoString returns the string representation
15080func (s ResourceInUseException) GoString() string {
15081	return s.String()
15082}
15083
15084func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
15085	return &ResourceInUseException{
15086		respMetadata: v,
15087	}
15088}
15089
15090// Code returns the exception type name.
15091func (s ResourceInUseException) Code() string {
15092	return "ResourceInUseException"
15093}
15094
15095// Message returns the exception's message.
15096func (s ResourceInUseException) Message() string {
15097	if s.Message_ != nil {
15098		return *s.Message_
15099	}
15100	return ""
15101}
15102
15103// OrigErr always returns nil, satisfies awserr.Error interface.
15104func (s ResourceInUseException) OrigErr() error {
15105	return nil
15106}
15107
15108func (s ResourceInUseException) Error() string {
15109	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15110}
15111
15112// Status code returns the HTTP status code for the request's response error.
15113func (s ResourceInUseException) StatusCode() int {
15114	return s.respMetadata.StatusCode
15115}
15116
15117// RequestID returns the service's response RequestID for request.
15118func (s ResourceInUseException) RequestID() string {
15119	return s.respMetadata.RequestID
15120}
15121
15122// The specified resource could not be found.
15123type ResourceNotFoundException struct {
15124	_            struct{} `type:"structure"`
15125	respMetadata protocol.ResponseMetadata
15126
15127	Message_ *string `locationName:"message" type:"string"`
15128}
15129
15130// String returns the string representation
15131func (s ResourceNotFoundException) String() string {
15132	return awsutil.Prettify(s)
15133}
15134
15135// GoString returns the string representation
15136func (s ResourceNotFoundException) GoString() string {
15137	return s.String()
15138}
15139
15140func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
15141	return &ResourceNotFoundException{
15142		respMetadata: v,
15143	}
15144}
15145
15146// Code returns the exception type name.
15147func (s ResourceNotFoundException) Code() string {
15148	return "ResourceNotFoundException"
15149}
15150
15151// Message returns the exception's message.
15152func (s ResourceNotFoundException) Message() string {
15153	if s.Message_ != nil {
15154		return *s.Message_
15155	}
15156	return ""
15157}
15158
15159// OrigErr always returns nil, satisfies awserr.Error interface.
15160func (s ResourceNotFoundException) OrigErr() error {
15161	return nil
15162}
15163
15164func (s ResourceNotFoundException) Error() string {
15165	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15166}
15167
15168// Status code returns the HTTP status code for the request's response error.
15169func (s ResourceNotFoundException) StatusCode() int {
15170	return s.respMetadata.StatusCode
15171}
15172
15173// RequestID returns the service's response RequestID for request.
15174func (s ResourceNotFoundException) RequestID() string {
15175	return s.respMetadata.RequestID
15176}
15177
15178// The type and amount of a resource to assign to a container. The supported
15179// resource types are GPUs and Elastic Inference accelerators. For more information,
15180// see Working with GPUs on Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-gpu.html)
15181// or Working with Amazon Elastic Inference on Amazon ECS (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-eia.html)
15182// in the Amazon Elastic Container Service Developer Guide
15183type ResourceRequirement struct {
15184	_ struct{} `type:"structure"`
15185
15186	// The type of resource to assign to a container. The supported values are GPU
15187	// or InferenceAccelerator.
15188	//
15189	// Type is a required field
15190	Type *string `locationName:"type" type:"string" required:"true" enum:"ResourceType"`
15191
15192	// The value for the specified resource type.
15193	//
15194	// If the GPU type is used, the value is the number of physical GPUs the Amazon
15195	// ECS container agent will reserve for the container. The number of GPUs reserved
15196	// for all containers in a task should not exceed the number of available GPUs
15197	// on the container instance the task is launched on.
15198	//
15199	// If the InferenceAccelerator type is used, the value should match the deviceName
15200	// for an InferenceAccelerator specified in a task definition.
15201	//
15202	// Value is a required field
15203	Value *string `locationName:"value" type:"string" required:"true"`
15204}
15205
15206// String returns the string representation
15207func (s ResourceRequirement) String() string {
15208	return awsutil.Prettify(s)
15209}
15210
15211// GoString returns the string representation
15212func (s ResourceRequirement) GoString() string {
15213	return s.String()
15214}
15215
15216// Validate inspects the fields of the type to determine if they are valid.
15217func (s *ResourceRequirement) Validate() error {
15218	invalidParams := request.ErrInvalidParams{Context: "ResourceRequirement"}
15219	if s.Type == nil {
15220		invalidParams.Add(request.NewErrParamRequired("Type"))
15221	}
15222	if s.Value == nil {
15223		invalidParams.Add(request.NewErrParamRequired("Value"))
15224	}
15225
15226	if invalidParams.Len() > 0 {
15227		return invalidParams
15228	}
15229	return nil
15230}
15231
15232// SetType sets the Type field's value.
15233func (s *ResourceRequirement) SetType(v string) *ResourceRequirement {
15234	s.Type = &v
15235	return s
15236}
15237
15238// SetValue sets the Value field's value.
15239func (s *ResourceRequirement) SetValue(v string) *ResourceRequirement {
15240	s.Value = &v
15241	return s
15242}
15243
15244type RunTaskInput struct {
15245	_ struct{} `type:"structure"`
15246
15247	// The capacity provider strategy to use for the task.
15248	//
15249	// A capacity provider strategy consists of one or more capacity providers along
15250	// with the base and weight to assign to them. A capacity provider must be associated
15251	// with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders
15252	// API is used to associate a capacity provider with a cluster. Only capacity
15253	// providers with an ACTIVE or UPDATING status can be used.
15254	//
15255	// If a capacityProviderStrategy is specified, the launchType parameter must
15256	// be omitted. If no capacityProviderStrategy or launchType is specified, the
15257	// defaultCapacityProviderStrategy for the cluster is used.
15258	//
15259	// If specifying a capacity provider that uses an Auto Scaling group, the capacity
15260	// provider must already be created. New capacity providers can be created with
15261	// the CreateCapacityProvider API operation.
15262	//
15263	// To use a AWS Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT
15264	// capacity providers. The AWS Fargate capacity providers are available to all
15265	// accounts and only need to be associated with a cluster to be used.
15266	//
15267	// The PutClusterCapacityProviders API operation is used to update the list
15268	// of available capacity providers for a cluster after the cluster is created.
15269	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
15270
15271	// The short name or full Amazon Resource Name (ARN) of the cluster on which
15272	// to run your task. If you do not specify a cluster, the default cluster is
15273	// assumed.
15274	Cluster *string `locationName:"cluster" type:"string"`
15275
15276	// The number of instantiations of the specified task to place on your cluster.
15277	// You can specify up to 10 tasks per call.
15278	Count *int64 `locationName:"count" type:"integer"`
15279
15280	// Specifies whether to enable Amazon ECS managed tags for the task. For more
15281	// information, see Tagging Your Amazon ECS Resources (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)
15282	// in the Amazon Elastic Container Service Developer Guide.
15283	EnableECSManagedTags *bool `locationName:"enableECSManagedTags" type:"boolean"`
15284
15285	// The name of the task group to associate with the task. The default value
15286	// is the family name of the task definition (for example, family:my-family-name).
15287	Group *string `locationName:"group" type:"string"`
15288
15289	// The launch type on which to run your task. For more information, see Amazon
15290	// ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
15291	// in the Amazon Elastic Container Service Developer Guide.
15292	//
15293	// If a launchType is specified, the capacityProviderStrategy parameter must
15294	// be omitted.
15295	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
15296
15297	// The network configuration for the task. This parameter is required for task
15298	// definitions that use the awsvpc network mode to receive their own elastic
15299	// network interface, and it is not supported for other network modes. For more
15300	// information, see Task Networking (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
15301	// in the Amazon Elastic Container Service Developer Guide.
15302	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
15303
15304	// A list of container overrides in JSON format that specify the name of a container
15305	// in the specified task definition and the overrides it should receive. You
15306	// can override the default command for a container (that is specified in the
15307	// task definition or Docker image) with a command override. You can also override
15308	// existing environment variables (that are specified in the task definition
15309	// or Docker image) on a container or add new environment variables to it with
15310	// an environment override.
15311	//
15312	// A total of 8192 characters are allowed for overrides. This limit includes
15313	// the JSON formatting characters of the override structure.
15314	Overrides *TaskOverride `locationName:"overrides" type:"structure"`
15315
15316	// An array of placement constraint objects to use for the task. You can specify
15317	// up to 10 constraints per task (including constraints in the task definition
15318	// and those specified at runtime).
15319	PlacementConstraints []*PlacementConstraint `locationName:"placementConstraints" type:"list"`
15320
15321	// The placement strategy objects to use for the task. You can specify a maximum
15322	// of five strategy rules per task.
15323	PlacementStrategy []*PlacementStrategy `locationName:"placementStrategy" type:"list"`
15324
15325	// The platform version the task should run. A platform version is only specified
15326	// for tasks using the Fargate launch type. If one is not specified, the LATEST
15327	// platform version is used by default. For more information, see AWS Fargate
15328	// Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
15329	// in the Amazon Elastic Container Service Developer Guide.
15330	PlatformVersion *string `locationName:"platformVersion" type:"string"`
15331
15332	// Specifies whether to propagate the tags from the task definition to the task.
15333	// If no value is specified, the tags are not propagated. Tags can only be propagated
15334	// to the task during task creation. To add tags to a task after task creation,
15335	// use the TagResource API action.
15336	//
15337	// An error will be received if you specify the SERVICE option when running
15338	// a task.
15339	PropagateTags *string `locationName:"propagateTags" type:"string" enum:"PropagateTags"`
15340
15341	// The reference ID to use for the task.
15342	ReferenceId *string `locationName:"referenceId" type:"string"`
15343
15344	// An optional tag specified when a task is started. For example, if you automatically
15345	// trigger a task to run a batch process job, you could apply a unique identifier
15346	// for that job to your task with the startedBy parameter. You can then identify
15347	// which tasks belong to that job by filtering the results of a ListTasks call
15348	// with the startedBy value. Up to 36 letters (uppercase and lowercase), numbers,
15349	// hyphens, and underscores are allowed.
15350	//
15351	// If a task is started by an Amazon ECS service, then the startedBy parameter
15352	// contains the deployment ID of the service that starts it.
15353	StartedBy *string `locationName:"startedBy" type:"string"`
15354
15355	// The metadata that you apply to the task to help you categorize and organize
15356	// them. Each tag consists of a key and an optional value, both of which you
15357	// define.
15358	//
15359	// The following basic restrictions apply to tags:
15360	//
15361	//    * Maximum number of tags per resource - 50
15362	//
15363	//    * For each resource, each tag key must be unique, and each tag key can
15364	//    have only one value.
15365	//
15366	//    * Maximum key length - 128 Unicode characters in UTF-8
15367	//
15368	//    * Maximum value length - 256 Unicode characters in UTF-8
15369	//
15370	//    * If your tagging schema is used across multiple services and resources,
15371	//    remember that other services may have restrictions on allowed characters.
15372	//    Generally allowed characters are: letters, numbers, and spaces representable
15373	//    in UTF-8, and the following characters: + - = . _ : / @.
15374	//
15375	//    * Tag keys and values are case-sensitive.
15376	//
15377	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
15378	//    as a prefix for either keys or values as it is reserved for AWS use. You
15379	//    cannot edit or delete tag keys or values with this prefix. Tags with this
15380	//    prefix do not count against your tags per resource limit.
15381	Tags []*Tag `locationName:"tags" type:"list"`
15382
15383	// The family and revision (family:revision) or full ARN of the task definition
15384	// to run. If a revision is not specified, the latest ACTIVE revision is used.
15385	//
15386	// TaskDefinition is a required field
15387	TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
15388}
15389
15390// String returns the string representation
15391func (s RunTaskInput) String() string {
15392	return awsutil.Prettify(s)
15393}
15394
15395// GoString returns the string representation
15396func (s RunTaskInput) GoString() string {
15397	return s.String()
15398}
15399
15400// Validate inspects the fields of the type to determine if they are valid.
15401func (s *RunTaskInput) Validate() error {
15402	invalidParams := request.ErrInvalidParams{Context: "RunTaskInput"}
15403	if s.TaskDefinition == nil {
15404		invalidParams.Add(request.NewErrParamRequired("TaskDefinition"))
15405	}
15406	if s.CapacityProviderStrategy != nil {
15407		for i, v := range s.CapacityProviderStrategy {
15408			if v == nil {
15409				continue
15410			}
15411			if err := v.Validate(); err != nil {
15412				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CapacityProviderStrategy", i), err.(request.ErrInvalidParams))
15413			}
15414		}
15415	}
15416	if s.NetworkConfiguration != nil {
15417		if err := s.NetworkConfiguration.Validate(); err != nil {
15418			invalidParams.AddNested("NetworkConfiguration", err.(request.ErrInvalidParams))
15419		}
15420	}
15421	if s.Overrides != nil {
15422		if err := s.Overrides.Validate(); err != nil {
15423			invalidParams.AddNested("Overrides", err.(request.ErrInvalidParams))
15424		}
15425	}
15426	if s.Tags != nil {
15427		for i, v := range s.Tags {
15428			if v == nil {
15429				continue
15430			}
15431			if err := v.Validate(); err != nil {
15432				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
15433			}
15434		}
15435	}
15436
15437	if invalidParams.Len() > 0 {
15438		return invalidParams
15439	}
15440	return nil
15441}
15442
15443// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
15444func (s *RunTaskInput) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *RunTaskInput {
15445	s.CapacityProviderStrategy = v
15446	return s
15447}
15448
15449// SetCluster sets the Cluster field's value.
15450func (s *RunTaskInput) SetCluster(v string) *RunTaskInput {
15451	s.Cluster = &v
15452	return s
15453}
15454
15455// SetCount sets the Count field's value.
15456func (s *RunTaskInput) SetCount(v int64) *RunTaskInput {
15457	s.Count = &v
15458	return s
15459}
15460
15461// SetEnableECSManagedTags sets the EnableECSManagedTags field's value.
15462func (s *RunTaskInput) SetEnableECSManagedTags(v bool) *RunTaskInput {
15463	s.EnableECSManagedTags = &v
15464	return s
15465}
15466
15467// SetGroup sets the Group field's value.
15468func (s *RunTaskInput) SetGroup(v string) *RunTaskInput {
15469	s.Group = &v
15470	return s
15471}
15472
15473// SetLaunchType sets the LaunchType field's value.
15474func (s *RunTaskInput) SetLaunchType(v string) *RunTaskInput {
15475	s.LaunchType = &v
15476	return s
15477}
15478
15479// SetNetworkConfiguration sets the NetworkConfiguration field's value.
15480func (s *RunTaskInput) SetNetworkConfiguration(v *NetworkConfiguration) *RunTaskInput {
15481	s.NetworkConfiguration = v
15482	return s
15483}
15484
15485// SetOverrides sets the Overrides field's value.
15486func (s *RunTaskInput) SetOverrides(v *TaskOverride) *RunTaskInput {
15487	s.Overrides = v
15488	return s
15489}
15490
15491// SetPlacementConstraints sets the PlacementConstraints field's value.
15492func (s *RunTaskInput) SetPlacementConstraints(v []*PlacementConstraint) *RunTaskInput {
15493	s.PlacementConstraints = v
15494	return s
15495}
15496
15497// SetPlacementStrategy sets the PlacementStrategy field's value.
15498func (s *RunTaskInput) SetPlacementStrategy(v []*PlacementStrategy) *RunTaskInput {
15499	s.PlacementStrategy = v
15500	return s
15501}
15502
15503// SetPlatformVersion sets the PlatformVersion field's value.
15504func (s *RunTaskInput) SetPlatformVersion(v string) *RunTaskInput {
15505	s.PlatformVersion = &v
15506	return s
15507}
15508
15509// SetPropagateTags sets the PropagateTags field's value.
15510func (s *RunTaskInput) SetPropagateTags(v string) *RunTaskInput {
15511	s.PropagateTags = &v
15512	return s
15513}
15514
15515// SetReferenceId sets the ReferenceId field's value.
15516func (s *RunTaskInput) SetReferenceId(v string) *RunTaskInput {
15517	s.ReferenceId = &v
15518	return s
15519}
15520
15521// SetStartedBy sets the StartedBy field's value.
15522func (s *RunTaskInput) SetStartedBy(v string) *RunTaskInput {
15523	s.StartedBy = &v
15524	return s
15525}
15526
15527// SetTags sets the Tags field's value.
15528func (s *RunTaskInput) SetTags(v []*Tag) *RunTaskInput {
15529	s.Tags = v
15530	return s
15531}
15532
15533// SetTaskDefinition sets the TaskDefinition field's value.
15534func (s *RunTaskInput) SetTaskDefinition(v string) *RunTaskInput {
15535	s.TaskDefinition = &v
15536	return s
15537}
15538
15539type RunTaskOutput struct {
15540	_ struct{} `type:"structure"`
15541
15542	// Any failures associated with the call.
15543	Failures []*Failure `locationName:"failures" type:"list"`
15544
15545	// A full description of the tasks that were run. The tasks that were successfully
15546	// placed on your cluster are described here.
15547	Tasks []*Task `locationName:"tasks" type:"list"`
15548}
15549
15550// String returns the string representation
15551func (s RunTaskOutput) String() string {
15552	return awsutil.Prettify(s)
15553}
15554
15555// GoString returns the string representation
15556func (s RunTaskOutput) GoString() string {
15557	return s.String()
15558}
15559
15560// SetFailures sets the Failures field's value.
15561func (s *RunTaskOutput) SetFailures(v []*Failure) *RunTaskOutput {
15562	s.Failures = v
15563	return s
15564}
15565
15566// SetTasks sets the Tasks field's value.
15567func (s *RunTaskOutput) SetTasks(v []*Task) *RunTaskOutput {
15568	s.Tasks = v
15569	return s
15570}
15571
15572// A floating-point percentage of the desired number of tasks to place and keep
15573// running in the task set.
15574type Scale struct {
15575	_ struct{} `type:"structure"`
15576
15577	// The unit of measure for the scale value.
15578	Unit *string `locationName:"unit" type:"string" enum:"ScaleUnit"`
15579
15580	// The value, specified as a percent total of a service's desiredCount, to scale
15581	// the task set. Accepted values are numbers between 0 and 100.
15582	Value *float64 `locationName:"value" type:"double"`
15583}
15584
15585// String returns the string representation
15586func (s Scale) String() string {
15587	return awsutil.Prettify(s)
15588}
15589
15590// GoString returns the string representation
15591func (s Scale) GoString() string {
15592	return s.String()
15593}
15594
15595// SetUnit sets the Unit field's value.
15596func (s *Scale) SetUnit(v string) *Scale {
15597	s.Unit = &v
15598	return s
15599}
15600
15601// SetValue sets the Value field's value.
15602func (s *Scale) SetValue(v float64) *Scale {
15603	s.Value = &v
15604	return s
15605}
15606
15607// An object representing the secret to expose to your container. Secrets can
15608// be exposed to a container in the following ways:
15609//
15610//    * To inject sensitive data into your containers as environment variables,
15611//    use the secrets container definition parameter.
15612//
15613//    * To reference sensitive information in the log configuration of a container,
15614//    use the secretOptions container definition parameter.
15615//
15616// For more information, see Specifying Sensitive Data (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html)
15617// in the Amazon Elastic Container Service Developer Guide.
15618type Secret struct {
15619	_ struct{} `type:"structure"`
15620
15621	// The name of the secret.
15622	//
15623	// Name is a required field
15624	Name *string `locationName:"name" type:"string" required:"true"`
15625
15626	// The secret to expose to the container. The supported values are either the
15627	// full ARN of the AWS Secrets Manager secret or the full ARN of the parameter
15628	// in the AWS Systems Manager Parameter Store.
15629	//
15630	// If the AWS Systems Manager Parameter Store parameter exists in the same Region
15631	// as the task you are launching, then you can use either the full ARN or name
15632	// of the parameter. If the parameter exists in a different Region, then the
15633	// full ARN must be specified.
15634	//
15635	// ValueFrom is a required field
15636	ValueFrom *string `locationName:"valueFrom" type:"string" required:"true"`
15637}
15638
15639// String returns the string representation
15640func (s Secret) String() string {
15641	return awsutil.Prettify(s)
15642}
15643
15644// GoString returns the string representation
15645func (s Secret) GoString() string {
15646	return s.String()
15647}
15648
15649// Validate inspects the fields of the type to determine if they are valid.
15650func (s *Secret) Validate() error {
15651	invalidParams := request.ErrInvalidParams{Context: "Secret"}
15652	if s.Name == nil {
15653		invalidParams.Add(request.NewErrParamRequired("Name"))
15654	}
15655	if s.ValueFrom == nil {
15656		invalidParams.Add(request.NewErrParamRequired("ValueFrom"))
15657	}
15658
15659	if invalidParams.Len() > 0 {
15660		return invalidParams
15661	}
15662	return nil
15663}
15664
15665// SetName sets the Name field's value.
15666func (s *Secret) SetName(v string) *Secret {
15667	s.Name = &v
15668	return s
15669}
15670
15671// SetValueFrom sets the ValueFrom field's value.
15672func (s *Secret) SetValueFrom(v string) *Secret {
15673	s.ValueFrom = &v
15674	return s
15675}
15676
15677// These errors are usually caused by a server issue.
15678type ServerException struct {
15679	_            struct{} `type:"structure"`
15680	respMetadata protocol.ResponseMetadata
15681
15682	Message_ *string `locationName:"message" type:"string"`
15683}
15684
15685// String returns the string representation
15686func (s ServerException) String() string {
15687	return awsutil.Prettify(s)
15688}
15689
15690// GoString returns the string representation
15691func (s ServerException) GoString() string {
15692	return s.String()
15693}
15694
15695func newErrorServerException(v protocol.ResponseMetadata) error {
15696	return &ServerException{
15697		respMetadata: v,
15698	}
15699}
15700
15701// Code returns the exception type name.
15702func (s ServerException) Code() string {
15703	return "ServerException"
15704}
15705
15706// Message returns the exception's message.
15707func (s ServerException) Message() string {
15708	if s.Message_ != nil {
15709		return *s.Message_
15710	}
15711	return ""
15712}
15713
15714// OrigErr always returns nil, satisfies awserr.Error interface.
15715func (s ServerException) OrigErr() error {
15716	return nil
15717}
15718
15719func (s ServerException) Error() string {
15720	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
15721}
15722
15723// Status code returns the HTTP status code for the request's response error.
15724func (s ServerException) StatusCode() int {
15725	return s.respMetadata.StatusCode
15726}
15727
15728// RequestID returns the service's response RequestID for request.
15729func (s ServerException) RequestID() string {
15730	return s.respMetadata.RequestID
15731}
15732
15733// Details on a service within a cluster
15734type Service struct {
15735	_ struct{} `type:"structure"`
15736
15737	// The capacity provider strategy associated with the service.
15738	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
15739
15740	// The Amazon Resource Name (ARN) of the cluster that hosts the service.
15741	ClusterArn *string `locationName:"clusterArn" type:"string"`
15742
15743	// The Unix timestamp for when the service was created.
15744	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`
15745
15746	// The principal that created the service.
15747	CreatedBy *string `locationName:"createdBy" type:"string"`
15748
15749	// Optional deployment parameters that control how many tasks run during the
15750	// deployment and the ordering of stopping and starting tasks.
15751	DeploymentConfiguration *DeploymentConfiguration `locationName:"deploymentConfiguration" type:"structure"`
15752
15753	// The deployment controller type the service is using. When using the DescribeServices
15754	// API, this field is omitted if the service is using the ECS deployment controller
15755	// type.
15756	DeploymentController *DeploymentController `locationName:"deploymentController" type:"structure"`
15757
15758	// The current state of deployments for the service.
15759	Deployments []*Deployment `locationName:"deployments" type:"list"`
15760
15761	// The desired number of instantiations of the task definition to keep running
15762	// on the service. This value is specified when the service is created with
15763	// CreateService, and it can be modified with UpdateService.
15764	DesiredCount *int64 `locationName:"desiredCount" type:"integer"`
15765
15766	// Specifies whether to enable Amazon ECS managed tags for the tasks in the
15767	// service. For more information, see Tagging Your Amazon ECS Resources (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)
15768	// in the Amazon Elastic Container Service Developer Guide.
15769	EnableECSManagedTags *bool `locationName:"enableECSManagedTags" type:"boolean"`
15770
15771	// The event stream for your service. A maximum of 100 of the latest events
15772	// are displayed.
15773	Events []*ServiceEvent `locationName:"events" type:"list"`
15774
15775	// The period of time, in seconds, that the Amazon ECS service scheduler ignores
15776	// unhealthy Elastic Load Balancing target health checks after a task has first
15777	// started.
15778	HealthCheckGracePeriodSeconds *int64 `locationName:"healthCheckGracePeriodSeconds" type:"integer"`
15779
15780	// The launch type on which your service is running. If no value is specified,
15781	// it will default to EC2. Valid values include EC2 and FARGATE. For more information,
15782	// see Amazon ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
15783	// in the Amazon Elastic Container Service Developer Guide.
15784	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
15785
15786	// A list of Elastic Load Balancing load balancer objects, containing the load
15787	// balancer name, the container name (as it appears in a container definition),
15788	// and the container port to access from the load balancer.
15789	LoadBalancers []*LoadBalancer `locationName:"loadBalancers" type:"list"`
15790
15791	// The VPC subnet and security group configuration for tasks that receive their
15792	// own elastic network interface by using the awsvpc networking mode.
15793	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
15794
15795	// The number of tasks in the cluster that are in the PENDING state.
15796	PendingCount *int64 `locationName:"pendingCount" type:"integer"`
15797
15798	// The placement constraints for the tasks in the service.
15799	PlacementConstraints []*PlacementConstraint `locationName:"placementConstraints" type:"list"`
15800
15801	// The placement strategy that determines how tasks for the service are placed.
15802	PlacementStrategy []*PlacementStrategy `locationName:"placementStrategy" type:"list"`
15803
15804	// The platform version on which to run your service. A platform version is
15805	// only specified for tasks using the Fargate launch type. If one is not specified,
15806	// the LATEST platform version is used by default. For more information, see
15807	// AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
15808	// in the Amazon Elastic Container Service Developer Guide.
15809	PlatformVersion *string `locationName:"platformVersion" type:"string"`
15810
15811	// Specifies whether to propagate the tags from the task definition or the service
15812	// to the task. If no value is specified, the tags are not propagated.
15813	PropagateTags *string `locationName:"propagateTags" type:"string" enum:"PropagateTags"`
15814
15815	// The ARN of the IAM role associated with the service that allows the Amazon
15816	// ECS container agent to register container instances with an Elastic Load
15817	// Balancing load balancer.
15818	RoleArn *string `locationName:"roleArn" type:"string"`
15819
15820	// The number of tasks in the cluster that are in the RUNNING state.
15821	RunningCount *int64 `locationName:"runningCount" type:"integer"`
15822
15823	// The scheduling strategy to use for the service. For more information, see
15824	// Services (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).
15825	//
15826	// There are two service scheduler strategies available:
15827	//
15828	//    * REPLICA-The replica scheduling strategy places and maintains the desired
15829	//    number of tasks across your cluster. By default, the service scheduler
15830	//    spreads tasks across Availability Zones. You can use task placement strategies
15831	//    and constraints to customize task placement decisions.
15832	//
15833	//    * DAEMON-The daemon scheduling strategy deploys exactly one task on each
15834	//    container instance in your cluster. When you are using this strategy,
15835	//    do not specify a desired number of tasks or any task placement strategies.
15836	//    Fargate tasks do not support the DAEMON scheduling strategy.
15837	SchedulingStrategy *string `locationName:"schedulingStrategy" type:"string" enum:"SchedulingStrategy"`
15838
15839	// The ARN that identifies the service. The ARN contains the arn:aws:ecs namespace,
15840	// followed by the Region of the service, the AWS account ID of the service
15841	// owner, the service namespace, and then the service name. For example, arn:aws:ecs:region:012345678910:service/my-service.
15842	ServiceArn *string `locationName:"serviceArn" type:"string"`
15843
15844	// The name of your service. Up to 255 letters (uppercase and lowercase), numbers,
15845	// and hyphens are allowed. Service names must be unique within a cluster, but
15846	// you can have similarly named services in multiple clusters within a Region
15847	// or across multiple Regions.
15848	ServiceName *string `locationName:"serviceName" type:"string"`
15849
15850	// The details of the service discovery registries to assign to this service.
15851	// For more information, see Service Discovery (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).
15852	ServiceRegistries []*ServiceRegistry `locationName:"serviceRegistries" type:"list"`
15853
15854	// The status of the service. The valid values are ACTIVE, DRAINING, or INACTIVE.
15855	Status *string `locationName:"status" type:"string"`
15856
15857	// The metadata that you apply to the service to help you categorize and organize
15858	// them. Each tag consists of a key and an optional value, both of which you
15859	// define.
15860	//
15861	// The following basic restrictions apply to tags:
15862	//
15863	//    * Maximum number of tags per resource - 50
15864	//
15865	//    * For each resource, each tag key must be unique, and each tag key can
15866	//    have only one value.
15867	//
15868	//    * Maximum key length - 128 Unicode characters in UTF-8
15869	//
15870	//    * Maximum value length - 256 Unicode characters in UTF-8
15871	//
15872	//    * If your tagging schema is used across multiple services and resources,
15873	//    remember that other services may have restrictions on allowed characters.
15874	//    Generally allowed characters are: letters, numbers, and spaces representable
15875	//    in UTF-8, and the following characters: + - = . _ : / @.
15876	//
15877	//    * Tag keys and values are case-sensitive.
15878	//
15879	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
15880	//    as a prefix for either keys or values as it is reserved for AWS use. You
15881	//    cannot edit or delete tag keys or values with this prefix. Tags with this
15882	//    prefix do not count against your tags per resource limit.
15883	Tags []*Tag `locationName:"tags" type:"list"`
15884
15885	// The task definition to use for tasks in the service. This value is specified
15886	// when the service is created with CreateService, and it can be modified with
15887	// UpdateService.
15888	TaskDefinition *string `locationName:"taskDefinition" type:"string"`
15889
15890	// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
15891	// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
15892	// desired number of tasks, how many tasks are running, and whether the task
15893	// set serves production traffic.
15894	TaskSets []*TaskSet `locationName:"taskSets" type:"list"`
15895}
15896
15897// String returns the string representation
15898func (s Service) String() string {
15899	return awsutil.Prettify(s)
15900}
15901
15902// GoString returns the string representation
15903func (s Service) GoString() string {
15904	return s.String()
15905}
15906
15907// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
15908func (s *Service) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *Service {
15909	s.CapacityProviderStrategy = v
15910	return s
15911}
15912
15913// SetClusterArn sets the ClusterArn field's value.
15914func (s *Service) SetClusterArn(v string) *Service {
15915	s.ClusterArn = &v
15916	return s
15917}
15918
15919// SetCreatedAt sets the CreatedAt field's value.
15920func (s *Service) SetCreatedAt(v time.Time) *Service {
15921	s.CreatedAt = &v
15922	return s
15923}
15924
15925// SetCreatedBy sets the CreatedBy field's value.
15926func (s *Service) SetCreatedBy(v string) *Service {
15927	s.CreatedBy = &v
15928	return s
15929}
15930
15931// SetDeploymentConfiguration sets the DeploymentConfiguration field's value.
15932func (s *Service) SetDeploymentConfiguration(v *DeploymentConfiguration) *Service {
15933	s.DeploymentConfiguration = v
15934	return s
15935}
15936
15937// SetDeploymentController sets the DeploymentController field's value.
15938func (s *Service) SetDeploymentController(v *DeploymentController) *Service {
15939	s.DeploymentController = v
15940	return s
15941}
15942
15943// SetDeployments sets the Deployments field's value.
15944func (s *Service) SetDeployments(v []*Deployment) *Service {
15945	s.Deployments = v
15946	return s
15947}
15948
15949// SetDesiredCount sets the DesiredCount field's value.
15950func (s *Service) SetDesiredCount(v int64) *Service {
15951	s.DesiredCount = &v
15952	return s
15953}
15954
15955// SetEnableECSManagedTags sets the EnableECSManagedTags field's value.
15956func (s *Service) SetEnableECSManagedTags(v bool) *Service {
15957	s.EnableECSManagedTags = &v
15958	return s
15959}
15960
15961// SetEvents sets the Events field's value.
15962func (s *Service) SetEvents(v []*ServiceEvent) *Service {
15963	s.Events = v
15964	return s
15965}
15966
15967// SetHealthCheckGracePeriodSeconds sets the HealthCheckGracePeriodSeconds field's value.
15968func (s *Service) SetHealthCheckGracePeriodSeconds(v int64) *Service {
15969	s.HealthCheckGracePeriodSeconds = &v
15970	return s
15971}
15972
15973// SetLaunchType sets the LaunchType field's value.
15974func (s *Service) SetLaunchType(v string) *Service {
15975	s.LaunchType = &v
15976	return s
15977}
15978
15979// SetLoadBalancers sets the LoadBalancers field's value.
15980func (s *Service) SetLoadBalancers(v []*LoadBalancer) *Service {
15981	s.LoadBalancers = v
15982	return s
15983}
15984
15985// SetNetworkConfiguration sets the NetworkConfiguration field's value.
15986func (s *Service) SetNetworkConfiguration(v *NetworkConfiguration) *Service {
15987	s.NetworkConfiguration = v
15988	return s
15989}
15990
15991// SetPendingCount sets the PendingCount field's value.
15992func (s *Service) SetPendingCount(v int64) *Service {
15993	s.PendingCount = &v
15994	return s
15995}
15996
15997// SetPlacementConstraints sets the PlacementConstraints field's value.
15998func (s *Service) SetPlacementConstraints(v []*PlacementConstraint) *Service {
15999	s.PlacementConstraints = v
16000	return s
16001}
16002
16003// SetPlacementStrategy sets the PlacementStrategy field's value.
16004func (s *Service) SetPlacementStrategy(v []*PlacementStrategy) *Service {
16005	s.PlacementStrategy = v
16006	return s
16007}
16008
16009// SetPlatformVersion sets the PlatformVersion field's value.
16010func (s *Service) SetPlatformVersion(v string) *Service {
16011	s.PlatformVersion = &v
16012	return s
16013}
16014
16015// SetPropagateTags sets the PropagateTags field's value.
16016func (s *Service) SetPropagateTags(v string) *Service {
16017	s.PropagateTags = &v
16018	return s
16019}
16020
16021// SetRoleArn sets the RoleArn field's value.
16022func (s *Service) SetRoleArn(v string) *Service {
16023	s.RoleArn = &v
16024	return s
16025}
16026
16027// SetRunningCount sets the RunningCount field's value.
16028func (s *Service) SetRunningCount(v int64) *Service {
16029	s.RunningCount = &v
16030	return s
16031}
16032
16033// SetSchedulingStrategy sets the SchedulingStrategy field's value.
16034func (s *Service) SetSchedulingStrategy(v string) *Service {
16035	s.SchedulingStrategy = &v
16036	return s
16037}
16038
16039// SetServiceArn sets the ServiceArn field's value.
16040func (s *Service) SetServiceArn(v string) *Service {
16041	s.ServiceArn = &v
16042	return s
16043}
16044
16045// SetServiceName sets the ServiceName field's value.
16046func (s *Service) SetServiceName(v string) *Service {
16047	s.ServiceName = &v
16048	return s
16049}
16050
16051// SetServiceRegistries sets the ServiceRegistries field's value.
16052func (s *Service) SetServiceRegistries(v []*ServiceRegistry) *Service {
16053	s.ServiceRegistries = v
16054	return s
16055}
16056
16057// SetStatus sets the Status field's value.
16058func (s *Service) SetStatus(v string) *Service {
16059	s.Status = &v
16060	return s
16061}
16062
16063// SetTags sets the Tags field's value.
16064func (s *Service) SetTags(v []*Tag) *Service {
16065	s.Tags = v
16066	return s
16067}
16068
16069// SetTaskDefinition sets the TaskDefinition field's value.
16070func (s *Service) SetTaskDefinition(v string) *Service {
16071	s.TaskDefinition = &v
16072	return s
16073}
16074
16075// SetTaskSets sets the TaskSets field's value.
16076func (s *Service) SetTaskSets(v []*TaskSet) *Service {
16077	s.TaskSets = v
16078	return s
16079}
16080
16081// Details on an event associated with a service.
16082type ServiceEvent struct {
16083	_ struct{} `type:"structure"`
16084
16085	// The Unix timestamp for when the event was triggered.
16086	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`
16087
16088	// The ID string of the event.
16089	Id *string `locationName:"id" type:"string"`
16090
16091	// The event message.
16092	Message *string `locationName:"message" type:"string"`
16093}
16094
16095// String returns the string representation
16096func (s ServiceEvent) String() string {
16097	return awsutil.Prettify(s)
16098}
16099
16100// GoString returns the string representation
16101func (s ServiceEvent) GoString() string {
16102	return s.String()
16103}
16104
16105// SetCreatedAt sets the CreatedAt field's value.
16106func (s *ServiceEvent) SetCreatedAt(v time.Time) *ServiceEvent {
16107	s.CreatedAt = &v
16108	return s
16109}
16110
16111// SetId sets the Id field's value.
16112func (s *ServiceEvent) SetId(v string) *ServiceEvent {
16113	s.Id = &v
16114	return s
16115}
16116
16117// SetMessage sets the Message field's value.
16118func (s *ServiceEvent) SetMessage(v string) *ServiceEvent {
16119	s.Message = &v
16120	return s
16121}
16122
16123// The specified service is not active. You can't update a service that is inactive.
16124// If you have previously deleted a service, you can re-create it with CreateService.
16125type ServiceNotActiveException struct {
16126	_            struct{} `type:"structure"`
16127	respMetadata protocol.ResponseMetadata
16128
16129	Message_ *string `locationName:"message" type:"string"`
16130}
16131
16132// String returns the string representation
16133func (s ServiceNotActiveException) String() string {
16134	return awsutil.Prettify(s)
16135}
16136
16137// GoString returns the string representation
16138func (s ServiceNotActiveException) GoString() string {
16139	return s.String()
16140}
16141
16142func newErrorServiceNotActiveException(v protocol.ResponseMetadata) error {
16143	return &ServiceNotActiveException{
16144		respMetadata: v,
16145	}
16146}
16147
16148// Code returns the exception type name.
16149func (s ServiceNotActiveException) Code() string {
16150	return "ServiceNotActiveException"
16151}
16152
16153// Message returns the exception's message.
16154func (s ServiceNotActiveException) Message() string {
16155	if s.Message_ != nil {
16156		return *s.Message_
16157	}
16158	return ""
16159}
16160
16161// OrigErr always returns nil, satisfies awserr.Error interface.
16162func (s ServiceNotActiveException) OrigErr() error {
16163	return nil
16164}
16165
16166func (s ServiceNotActiveException) Error() string {
16167	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
16168}
16169
16170// Status code returns the HTTP status code for the request's response error.
16171func (s ServiceNotActiveException) StatusCode() int {
16172	return s.respMetadata.StatusCode
16173}
16174
16175// RequestID returns the service's response RequestID for request.
16176func (s ServiceNotActiveException) RequestID() string {
16177	return s.respMetadata.RequestID
16178}
16179
16180// The specified service could not be found. You can view your available services
16181// with ListServices. Amazon ECS services are cluster-specific and Region-specific.
16182type ServiceNotFoundException struct {
16183	_            struct{} `type:"structure"`
16184	respMetadata protocol.ResponseMetadata
16185
16186	Message_ *string `locationName:"message" type:"string"`
16187}
16188
16189// String returns the string representation
16190func (s ServiceNotFoundException) String() string {
16191	return awsutil.Prettify(s)
16192}
16193
16194// GoString returns the string representation
16195func (s ServiceNotFoundException) GoString() string {
16196	return s.String()
16197}
16198
16199func newErrorServiceNotFoundException(v protocol.ResponseMetadata) error {
16200	return &ServiceNotFoundException{
16201		respMetadata: v,
16202	}
16203}
16204
16205// Code returns the exception type name.
16206func (s ServiceNotFoundException) Code() string {
16207	return "ServiceNotFoundException"
16208}
16209
16210// Message returns the exception's message.
16211func (s ServiceNotFoundException) Message() string {
16212	if s.Message_ != nil {
16213		return *s.Message_
16214	}
16215	return ""
16216}
16217
16218// OrigErr always returns nil, satisfies awserr.Error interface.
16219func (s ServiceNotFoundException) OrigErr() error {
16220	return nil
16221}
16222
16223func (s ServiceNotFoundException) Error() string {
16224	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
16225}
16226
16227// Status code returns the HTTP status code for the request's response error.
16228func (s ServiceNotFoundException) StatusCode() int {
16229	return s.respMetadata.StatusCode
16230}
16231
16232// RequestID returns the service's response RequestID for request.
16233func (s ServiceNotFoundException) RequestID() string {
16234	return s.respMetadata.RequestID
16235}
16236
16237// Details of the service registry.
16238type ServiceRegistry struct {
16239	_ struct{} `type:"structure"`
16240
16241	// The container name value, already specified in the task definition, to be
16242	// used for your service discovery service. If the task definition that your
16243	// service task specifies uses the bridge or host network mode, you must specify
16244	// a containerName and containerPort combination from the task definition. If
16245	// the task definition that your service task specifies uses the awsvpc network
16246	// mode and a type SRV DNS record is used, you must specify either a containerName
16247	// and containerPort combination or a port value, but not both.
16248	ContainerName *string `locationName:"containerName" type:"string"`
16249
16250	// The port value, already specified in the task definition, to be used for
16251	// your service discovery service. If the task definition your service task
16252	// specifies uses the bridge or host network mode, you must specify a containerName
16253	// and containerPort combination from the task definition. If the task definition
16254	// your service task specifies uses the awsvpc network mode and a type SRV DNS
16255	// record is used, you must specify either a containerName and containerPort
16256	// combination or a port value, but not both.
16257	ContainerPort *int64 `locationName:"containerPort" type:"integer"`
16258
16259	// The port value used if your service discovery service specified an SRV record.
16260	// This field may be used if both the awsvpc network mode and SRV records are
16261	// used.
16262	Port *int64 `locationName:"port" type:"integer"`
16263
16264	// The Amazon Resource Name (ARN) of the service registry. The currently supported
16265	// service registry is AWS Cloud Map. For more information, see CreateService
16266	// (https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html).
16267	RegistryArn *string `locationName:"registryArn" type:"string"`
16268}
16269
16270// String returns the string representation
16271func (s ServiceRegistry) String() string {
16272	return awsutil.Prettify(s)
16273}
16274
16275// GoString returns the string representation
16276func (s ServiceRegistry) GoString() string {
16277	return s.String()
16278}
16279
16280// SetContainerName sets the ContainerName field's value.
16281func (s *ServiceRegistry) SetContainerName(v string) *ServiceRegistry {
16282	s.ContainerName = &v
16283	return s
16284}
16285
16286// SetContainerPort sets the ContainerPort field's value.
16287func (s *ServiceRegistry) SetContainerPort(v int64) *ServiceRegistry {
16288	s.ContainerPort = &v
16289	return s
16290}
16291
16292// SetPort sets the Port field's value.
16293func (s *ServiceRegistry) SetPort(v int64) *ServiceRegistry {
16294	s.Port = &v
16295	return s
16296}
16297
16298// SetRegistryArn sets the RegistryArn field's value.
16299func (s *ServiceRegistry) SetRegistryArn(v string) *ServiceRegistry {
16300	s.RegistryArn = &v
16301	return s
16302}
16303
16304// The current account setting for a resource.
16305type Setting struct {
16306	_ struct{} `type:"structure"`
16307
16308	// The Amazon ECS resource name.
16309	Name *string `locationName:"name" type:"string" enum:"SettingName"`
16310
16311	// The ARN of the principal, which can be an IAM user, IAM role, or the root
16312	// user. If this field is omitted, the authenticated user is assumed.
16313	PrincipalArn *string `locationName:"principalArn" type:"string"`
16314
16315	// Whether the account setting is enabled or disabled for the specified resource.
16316	Value *string `locationName:"value" type:"string"`
16317}
16318
16319// String returns the string representation
16320func (s Setting) String() string {
16321	return awsutil.Prettify(s)
16322}
16323
16324// GoString returns the string representation
16325func (s Setting) GoString() string {
16326	return s.String()
16327}
16328
16329// SetName sets the Name field's value.
16330func (s *Setting) SetName(v string) *Setting {
16331	s.Name = &v
16332	return s
16333}
16334
16335// SetPrincipalArn sets the PrincipalArn field's value.
16336func (s *Setting) SetPrincipalArn(v string) *Setting {
16337	s.PrincipalArn = &v
16338	return s
16339}
16340
16341// SetValue sets the Value field's value.
16342func (s *Setting) SetValue(v string) *Setting {
16343	s.Value = &v
16344	return s
16345}
16346
16347type StartTaskInput struct {
16348	_ struct{} `type:"structure"`
16349
16350	// The short name or full Amazon Resource Name (ARN) of the cluster on which
16351	// to start your task. If you do not specify a cluster, the default cluster
16352	// is assumed.
16353	Cluster *string `locationName:"cluster" type:"string"`
16354
16355	// The container instance IDs or full ARN entries for the container instances
16356	// on which you would like to place your task. You can specify up to 10 container
16357	// instances.
16358	//
16359	// ContainerInstances is a required field
16360	ContainerInstances []*string `locationName:"containerInstances" type:"list" required:"true"`
16361
16362	// Specifies whether to enable Amazon ECS managed tags for the task. For more
16363	// information, see Tagging Your Amazon ECS Resources (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)
16364	// in the Amazon Elastic Container Service Developer Guide.
16365	EnableECSManagedTags *bool `locationName:"enableECSManagedTags" type:"boolean"`
16366
16367	// The name of the task group to associate with the task. The default value
16368	// is the family name of the task definition (for example, family:my-family-name).
16369	Group *string `locationName:"group" type:"string"`
16370
16371	// The VPC subnet and security group configuration for tasks that receive their
16372	// own elastic network interface by using the awsvpc networking mode.
16373	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
16374
16375	// A list of container overrides in JSON format that specify the name of a container
16376	// in the specified task definition and the overrides it should receive. You
16377	// can override the default command for a container (that is specified in the
16378	// task definition or Docker image) with a command override. You can also override
16379	// existing environment variables (that are specified in the task definition
16380	// or Docker image) on a container or add new environment variables to it with
16381	// an environment override.
16382	//
16383	// A total of 8192 characters are allowed for overrides. This limit includes
16384	// the JSON formatting characters of the override structure.
16385	Overrides *TaskOverride `locationName:"overrides" type:"structure"`
16386
16387	// Specifies whether to propagate the tags from the task definition or the service
16388	// to the task. If no value is specified, the tags are not propagated.
16389	PropagateTags *string `locationName:"propagateTags" type:"string" enum:"PropagateTags"`
16390
16391	// The reference ID to use for the task.
16392	ReferenceId *string `locationName:"referenceId" type:"string"`
16393
16394	// An optional tag specified when a task is started. For example, if you automatically
16395	// trigger a task to run a batch process job, you could apply a unique identifier
16396	// for that job to your task with the startedBy parameter. You can then identify
16397	// which tasks belong to that job by filtering the results of a ListTasks call
16398	// with the startedBy value. Up to 36 letters (uppercase and lowercase), numbers,
16399	// hyphens, and underscores are allowed.
16400	//
16401	// If a task is started by an Amazon ECS service, then the startedBy parameter
16402	// contains the deployment ID of the service that starts it.
16403	StartedBy *string `locationName:"startedBy" type:"string"`
16404
16405	// The metadata that you apply to the task to help you categorize and organize
16406	// them. Each tag consists of a key and an optional value, both of which you
16407	// define.
16408	//
16409	// The following basic restrictions apply to tags:
16410	//
16411	//    * Maximum number of tags per resource - 50
16412	//
16413	//    * For each resource, each tag key must be unique, and each tag key can
16414	//    have only one value.
16415	//
16416	//    * Maximum key length - 128 Unicode characters in UTF-8
16417	//
16418	//    * Maximum value length - 256 Unicode characters in UTF-8
16419	//
16420	//    * If your tagging schema is used across multiple services and resources,
16421	//    remember that other services may have restrictions on allowed characters.
16422	//    Generally allowed characters are: letters, numbers, and spaces representable
16423	//    in UTF-8, and the following characters: + - = . _ : / @.
16424	//
16425	//    * Tag keys and values are case-sensitive.
16426	//
16427	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
16428	//    as a prefix for either keys or values as it is reserved for AWS use. You
16429	//    cannot edit or delete tag keys or values with this prefix. Tags with this
16430	//    prefix do not count against your tags per resource limit.
16431	Tags []*Tag `locationName:"tags" type:"list"`
16432
16433	// The family and revision (family:revision) or full ARN of the task definition
16434	// to start. If a revision is not specified, the latest ACTIVE revision is used.
16435	//
16436	// TaskDefinition is a required field
16437	TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
16438}
16439
16440// String returns the string representation
16441func (s StartTaskInput) String() string {
16442	return awsutil.Prettify(s)
16443}
16444
16445// GoString returns the string representation
16446func (s StartTaskInput) GoString() string {
16447	return s.String()
16448}
16449
16450// Validate inspects the fields of the type to determine if they are valid.
16451func (s *StartTaskInput) Validate() error {
16452	invalidParams := request.ErrInvalidParams{Context: "StartTaskInput"}
16453	if s.ContainerInstances == nil {
16454		invalidParams.Add(request.NewErrParamRequired("ContainerInstances"))
16455	}
16456	if s.TaskDefinition == nil {
16457		invalidParams.Add(request.NewErrParamRequired("TaskDefinition"))
16458	}
16459	if s.NetworkConfiguration != nil {
16460		if err := s.NetworkConfiguration.Validate(); err != nil {
16461			invalidParams.AddNested("NetworkConfiguration", err.(request.ErrInvalidParams))
16462		}
16463	}
16464	if s.Overrides != nil {
16465		if err := s.Overrides.Validate(); err != nil {
16466			invalidParams.AddNested("Overrides", err.(request.ErrInvalidParams))
16467		}
16468	}
16469	if s.Tags != nil {
16470		for i, v := range s.Tags {
16471			if v == nil {
16472				continue
16473			}
16474			if err := v.Validate(); err != nil {
16475				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
16476			}
16477		}
16478	}
16479
16480	if invalidParams.Len() > 0 {
16481		return invalidParams
16482	}
16483	return nil
16484}
16485
16486// SetCluster sets the Cluster field's value.
16487func (s *StartTaskInput) SetCluster(v string) *StartTaskInput {
16488	s.Cluster = &v
16489	return s
16490}
16491
16492// SetContainerInstances sets the ContainerInstances field's value.
16493func (s *StartTaskInput) SetContainerInstances(v []*string) *StartTaskInput {
16494	s.ContainerInstances = v
16495	return s
16496}
16497
16498// SetEnableECSManagedTags sets the EnableECSManagedTags field's value.
16499func (s *StartTaskInput) SetEnableECSManagedTags(v bool) *StartTaskInput {
16500	s.EnableECSManagedTags = &v
16501	return s
16502}
16503
16504// SetGroup sets the Group field's value.
16505func (s *StartTaskInput) SetGroup(v string) *StartTaskInput {
16506	s.Group = &v
16507	return s
16508}
16509
16510// SetNetworkConfiguration sets the NetworkConfiguration field's value.
16511func (s *StartTaskInput) SetNetworkConfiguration(v *NetworkConfiguration) *StartTaskInput {
16512	s.NetworkConfiguration = v
16513	return s
16514}
16515
16516// SetOverrides sets the Overrides field's value.
16517func (s *StartTaskInput) SetOverrides(v *TaskOverride) *StartTaskInput {
16518	s.Overrides = v
16519	return s
16520}
16521
16522// SetPropagateTags sets the PropagateTags field's value.
16523func (s *StartTaskInput) SetPropagateTags(v string) *StartTaskInput {
16524	s.PropagateTags = &v
16525	return s
16526}
16527
16528// SetReferenceId sets the ReferenceId field's value.
16529func (s *StartTaskInput) SetReferenceId(v string) *StartTaskInput {
16530	s.ReferenceId = &v
16531	return s
16532}
16533
16534// SetStartedBy sets the StartedBy field's value.
16535func (s *StartTaskInput) SetStartedBy(v string) *StartTaskInput {
16536	s.StartedBy = &v
16537	return s
16538}
16539
16540// SetTags sets the Tags field's value.
16541func (s *StartTaskInput) SetTags(v []*Tag) *StartTaskInput {
16542	s.Tags = v
16543	return s
16544}
16545
16546// SetTaskDefinition sets the TaskDefinition field's value.
16547func (s *StartTaskInput) SetTaskDefinition(v string) *StartTaskInput {
16548	s.TaskDefinition = &v
16549	return s
16550}
16551
16552type StartTaskOutput struct {
16553	_ struct{} `type:"structure"`
16554
16555	// Any failures associated with the call.
16556	Failures []*Failure `locationName:"failures" type:"list"`
16557
16558	// A full description of the tasks that were started. Each task that was successfully
16559	// placed on your container instances is described.
16560	Tasks []*Task `locationName:"tasks" type:"list"`
16561}
16562
16563// String returns the string representation
16564func (s StartTaskOutput) String() string {
16565	return awsutil.Prettify(s)
16566}
16567
16568// GoString returns the string representation
16569func (s StartTaskOutput) GoString() string {
16570	return s.String()
16571}
16572
16573// SetFailures sets the Failures field's value.
16574func (s *StartTaskOutput) SetFailures(v []*Failure) *StartTaskOutput {
16575	s.Failures = v
16576	return s
16577}
16578
16579// SetTasks sets the Tasks field's value.
16580func (s *StartTaskOutput) SetTasks(v []*Task) *StartTaskOutput {
16581	s.Tasks = v
16582	return s
16583}
16584
16585type StopTaskInput struct {
16586	_ struct{} `type:"structure"`
16587
16588	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
16589	// the task to stop. If you do not specify a cluster, the default cluster is
16590	// assumed.
16591	Cluster *string `locationName:"cluster" type:"string"`
16592
16593	// An optional message specified when a task is stopped. For example, if you
16594	// are using a custom scheduler, you can use this parameter to specify the reason
16595	// for stopping the task here, and the message appears in subsequent DescribeTasks
16596	// API operations on this task. Up to 255 characters are allowed in this message.
16597	Reason *string `locationName:"reason" type:"string"`
16598
16599	// The task ID or full Amazon Resource Name (ARN) of the task to stop.
16600	//
16601	// Task is a required field
16602	Task *string `locationName:"task" type:"string" required:"true"`
16603}
16604
16605// String returns the string representation
16606func (s StopTaskInput) String() string {
16607	return awsutil.Prettify(s)
16608}
16609
16610// GoString returns the string representation
16611func (s StopTaskInput) GoString() string {
16612	return s.String()
16613}
16614
16615// Validate inspects the fields of the type to determine if they are valid.
16616func (s *StopTaskInput) Validate() error {
16617	invalidParams := request.ErrInvalidParams{Context: "StopTaskInput"}
16618	if s.Task == nil {
16619		invalidParams.Add(request.NewErrParamRequired("Task"))
16620	}
16621
16622	if invalidParams.Len() > 0 {
16623		return invalidParams
16624	}
16625	return nil
16626}
16627
16628// SetCluster sets the Cluster field's value.
16629func (s *StopTaskInput) SetCluster(v string) *StopTaskInput {
16630	s.Cluster = &v
16631	return s
16632}
16633
16634// SetReason sets the Reason field's value.
16635func (s *StopTaskInput) SetReason(v string) *StopTaskInput {
16636	s.Reason = &v
16637	return s
16638}
16639
16640// SetTask sets the Task field's value.
16641func (s *StopTaskInput) SetTask(v string) *StopTaskInput {
16642	s.Task = &v
16643	return s
16644}
16645
16646type StopTaskOutput struct {
16647	_ struct{} `type:"structure"`
16648
16649	// The task that was stopped.
16650	Task *Task `locationName:"task" type:"structure"`
16651}
16652
16653// String returns the string representation
16654func (s StopTaskOutput) String() string {
16655	return awsutil.Prettify(s)
16656}
16657
16658// GoString returns the string representation
16659func (s StopTaskOutput) GoString() string {
16660	return s.String()
16661}
16662
16663// SetTask sets the Task field's value.
16664func (s *StopTaskOutput) SetTask(v *Task) *StopTaskOutput {
16665	s.Task = v
16666	return s
16667}
16668
16669type SubmitAttachmentStateChangesInput struct {
16670	_ struct{} `type:"structure"`
16671
16672	// Any attachments associated with the state change request.
16673	//
16674	// Attachments is a required field
16675	Attachments []*AttachmentStateChange `locationName:"attachments" type:"list" required:"true"`
16676
16677	// The short name or full ARN of the cluster that hosts the container instance
16678	// the attachment belongs to.
16679	Cluster *string `locationName:"cluster" type:"string"`
16680}
16681
16682// String returns the string representation
16683func (s SubmitAttachmentStateChangesInput) String() string {
16684	return awsutil.Prettify(s)
16685}
16686
16687// GoString returns the string representation
16688func (s SubmitAttachmentStateChangesInput) GoString() string {
16689	return s.String()
16690}
16691
16692// Validate inspects the fields of the type to determine if they are valid.
16693func (s *SubmitAttachmentStateChangesInput) Validate() error {
16694	invalidParams := request.ErrInvalidParams{Context: "SubmitAttachmentStateChangesInput"}
16695	if s.Attachments == nil {
16696		invalidParams.Add(request.NewErrParamRequired("Attachments"))
16697	}
16698	if s.Attachments != nil {
16699		for i, v := range s.Attachments {
16700			if v == nil {
16701				continue
16702			}
16703			if err := v.Validate(); err != nil {
16704				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attachments", i), err.(request.ErrInvalidParams))
16705			}
16706		}
16707	}
16708
16709	if invalidParams.Len() > 0 {
16710		return invalidParams
16711	}
16712	return nil
16713}
16714
16715// SetAttachments sets the Attachments field's value.
16716func (s *SubmitAttachmentStateChangesInput) SetAttachments(v []*AttachmentStateChange) *SubmitAttachmentStateChangesInput {
16717	s.Attachments = v
16718	return s
16719}
16720
16721// SetCluster sets the Cluster field's value.
16722func (s *SubmitAttachmentStateChangesInput) SetCluster(v string) *SubmitAttachmentStateChangesInput {
16723	s.Cluster = &v
16724	return s
16725}
16726
16727type SubmitAttachmentStateChangesOutput struct {
16728	_ struct{} `type:"structure"`
16729
16730	// Acknowledgement of the state change.
16731	Acknowledgment *string `locationName:"acknowledgment" type:"string"`
16732}
16733
16734// String returns the string representation
16735func (s SubmitAttachmentStateChangesOutput) String() string {
16736	return awsutil.Prettify(s)
16737}
16738
16739// GoString returns the string representation
16740func (s SubmitAttachmentStateChangesOutput) GoString() string {
16741	return s.String()
16742}
16743
16744// SetAcknowledgment sets the Acknowledgment field's value.
16745func (s *SubmitAttachmentStateChangesOutput) SetAcknowledgment(v string) *SubmitAttachmentStateChangesOutput {
16746	s.Acknowledgment = &v
16747	return s
16748}
16749
16750type SubmitContainerStateChangeInput struct {
16751	_ struct{} `type:"structure"`
16752
16753	// The short name or full ARN of the cluster that hosts the container.
16754	Cluster *string `locationName:"cluster" type:"string"`
16755
16756	// The name of the container.
16757	ContainerName *string `locationName:"containerName" type:"string"`
16758
16759	// The exit code returned for the state change request.
16760	ExitCode *int64 `locationName:"exitCode" type:"integer"`
16761
16762	// The network bindings of the container.
16763	NetworkBindings []*NetworkBinding `locationName:"networkBindings" type:"list"`
16764
16765	// The reason for the state change request.
16766	Reason *string `locationName:"reason" type:"string"`
16767
16768	// The ID of the Docker container.
16769	RuntimeId *string `locationName:"runtimeId" type:"string"`
16770
16771	// The status of the state change request.
16772	Status *string `locationName:"status" type:"string"`
16773
16774	// The task ID or full Amazon Resource Name (ARN) of the task that hosts the
16775	// container.
16776	Task *string `locationName:"task" type:"string"`
16777}
16778
16779// String returns the string representation
16780func (s SubmitContainerStateChangeInput) String() string {
16781	return awsutil.Prettify(s)
16782}
16783
16784// GoString returns the string representation
16785func (s SubmitContainerStateChangeInput) GoString() string {
16786	return s.String()
16787}
16788
16789// SetCluster sets the Cluster field's value.
16790func (s *SubmitContainerStateChangeInput) SetCluster(v string) *SubmitContainerStateChangeInput {
16791	s.Cluster = &v
16792	return s
16793}
16794
16795// SetContainerName sets the ContainerName field's value.
16796func (s *SubmitContainerStateChangeInput) SetContainerName(v string) *SubmitContainerStateChangeInput {
16797	s.ContainerName = &v
16798	return s
16799}
16800
16801// SetExitCode sets the ExitCode field's value.
16802func (s *SubmitContainerStateChangeInput) SetExitCode(v int64) *SubmitContainerStateChangeInput {
16803	s.ExitCode = &v
16804	return s
16805}
16806
16807// SetNetworkBindings sets the NetworkBindings field's value.
16808func (s *SubmitContainerStateChangeInput) SetNetworkBindings(v []*NetworkBinding) *SubmitContainerStateChangeInput {
16809	s.NetworkBindings = v
16810	return s
16811}
16812
16813// SetReason sets the Reason field's value.
16814func (s *SubmitContainerStateChangeInput) SetReason(v string) *SubmitContainerStateChangeInput {
16815	s.Reason = &v
16816	return s
16817}
16818
16819// SetRuntimeId sets the RuntimeId field's value.
16820func (s *SubmitContainerStateChangeInput) SetRuntimeId(v string) *SubmitContainerStateChangeInput {
16821	s.RuntimeId = &v
16822	return s
16823}
16824
16825// SetStatus sets the Status field's value.
16826func (s *SubmitContainerStateChangeInput) SetStatus(v string) *SubmitContainerStateChangeInput {
16827	s.Status = &v
16828	return s
16829}
16830
16831// SetTask sets the Task field's value.
16832func (s *SubmitContainerStateChangeInput) SetTask(v string) *SubmitContainerStateChangeInput {
16833	s.Task = &v
16834	return s
16835}
16836
16837type SubmitContainerStateChangeOutput struct {
16838	_ struct{} `type:"structure"`
16839
16840	// Acknowledgement of the state change.
16841	Acknowledgment *string `locationName:"acknowledgment" type:"string"`
16842}
16843
16844// String returns the string representation
16845func (s SubmitContainerStateChangeOutput) String() string {
16846	return awsutil.Prettify(s)
16847}
16848
16849// GoString returns the string representation
16850func (s SubmitContainerStateChangeOutput) GoString() string {
16851	return s.String()
16852}
16853
16854// SetAcknowledgment sets the Acknowledgment field's value.
16855func (s *SubmitContainerStateChangeOutput) SetAcknowledgment(v string) *SubmitContainerStateChangeOutput {
16856	s.Acknowledgment = &v
16857	return s
16858}
16859
16860type SubmitTaskStateChangeInput struct {
16861	_ struct{} `type:"structure"`
16862
16863	// Any attachments associated with the state change request.
16864	Attachments []*AttachmentStateChange `locationName:"attachments" type:"list"`
16865
16866	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
16867	// the task.
16868	Cluster *string `locationName:"cluster" type:"string"`
16869
16870	// Any containers associated with the state change request.
16871	Containers []*ContainerStateChange `locationName:"containers" type:"list"`
16872
16873	// The Unix timestamp for when the task execution stopped.
16874	ExecutionStoppedAt *time.Time `locationName:"executionStoppedAt" type:"timestamp"`
16875
16876	// The Unix timestamp for when the container image pull began.
16877	PullStartedAt *time.Time `locationName:"pullStartedAt" type:"timestamp"`
16878
16879	// The Unix timestamp for when the container image pull completed.
16880	PullStoppedAt *time.Time `locationName:"pullStoppedAt" type:"timestamp"`
16881
16882	// The reason for the state change request.
16883	Reason *string `locationName:"reason" type:"string"`
16884
16885	// The status of the state change request.
16886	Status *string `locationName:"status" type:"string"`
16887
16888	// The task ID or full ARN of the task in the state change request.
16889	Task *string `locationName:"task" type:"string"`
16890}
16891
16892// String returns the string representation
16893func (s SubmitTaskStateChangeInput) String() string {
16894	return awsutil.Prettify(s)
16895}
16896
16897// GoString returns the string representation
16898func (s SubmitTaskStateChangeInput) GoString() string {
16899	return s.String()
16900}
16901
16902// Validate inspects the fields of the type to determine if they are valid.
16903func (s *SubmitTaskStateChangeInput) Validate() error {
16904	invalidParams := request.ErrInvalidParams{Context: "SubmitTaskStateChangeInput"}
16905	if s.Attachments != nil {
16906		for i, v := range s.Attachments {
16907			if v == nil {
16908				continue
16909			}
16910			if err := v.Validate(); err != nil {
16911				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attachments", i), err.(request.ErrInvalidParams))
16912			}
16913		}
16914	}
16915
16916	if invalidParams.Len() > 0 {
16917		return invalidParams
16918	}
16919	return nil
16920}
16921
16922// SetAttachments sets the Attachments field's value.
16923func (s *SubmitTaskStateChangeInput) SetAttachments(v []*AttachmentStateChange) *SubmitTaskStateChangeInput {
16924	s.Attachments = v
16925	return s
16926}
16927
16928// SetCluster sets the Cluster field's value.
16929func (s *SubmitTaskStateChangeInput) SetCluster(v string) *SubmitTaskStateChangeInput {
16930	s.Cluster = &v
16931	return s
16932}
16933
16934// SetContainers sets the Containers field's value.
16935func (s *SubmitTaskStateChangeInput) SetContainers(v []*ContainerStateChange) *SubmitTaskStateChangeInput {
16936	s.Containers = v
16937	return s
16938}
16939
16940// SetExecutionStoppedAt sets the ExecutionStoppedAt field's value.
16941func (s *SubmitTaskStateChangeInput) SetExecutionStoppedAt(v time.Time) *SubmitTaskStateChangeInput {
16942	s.ExecutionStoppedAt = &v
16943	return s
16944}
16945
16946// SetPullStartedAt sets the PullStartedAt field's value.
16947func (s *SubmitTaskStateChangeInput) SetPullStartedAt(v time.Time) *SubmitTaskStateChangeInput {
16948	s.PullStartedAt = &v
16949	return s
16950}
16951
16952// SetPullStoppedAt sets the PullStoppedAt field's value.
16953func (s *SubmitTaskStateChangeInput) SetPullStoppedAt(v time.Time) *SubmitTaskStateChangeInput {
16954	s.PullStoppedAt = &v
16955	return s
16956}
16957
16958// SetReason sets the Reason field's value.
16959func (s *SubmitTaskStateChangeInput) SetReason(v string) *SubmitTaskStateChangeInput {
16960	s.Reason = &v
16961	return s
16962}
16963
16964// SetStatus sets the Status field's value.
16965func (s *SubmitTaskStateChangeInput) SetStatus(v string) *SubmitTaskStateChangeInput {
16966	s.Status = &v
16967	return s
16968}
16969
16970// SetTask sets the Task field's value.
16971func (s *SubmitTaskStateChangeInput) SetTask(v string) *SubmitTaskStateChangeInput {
16972	s.Task = &v
16973	return s
16974}
16975
16976type SubmitTaskStateChangeOutput struct {
16977	_ struct{} `type:"structure"`
16978
16979	// Acknowledgement of the state change.
16980	Acknowledgment *string `locationName:"acknowledgment" type:"string"`
16981}
16982
16983// String returns the string representation
16984func (s SubmitTaskStateChangeOutput) String() string {
16985	return awsutil.Prettify(s)
16986}
16987
16988// GoString returns the string representation
16989func (s SubmitTaskStateChangeOutput) GoString() string {
16990	return s.String()
16991}
16992
16993// SetAcknowledgment sets the Acknowledgment field's value.
16994func (s *SubmitTaskStateChangeOutput) SetAcknowledgment(v string) *SubmitTaskStateChangeOutput {
16995	s.Acknowledgment = &v
16996	return s
16997}
16998
16999// A list of namespaced kernel parameters to set in the container. This parameter
17000// maps to Sysctls in the Create a container (https://docs.docker.com/engine/api/v1.35/#operation/ContainerCreate)
17001// section of the Docker Remote API (https://docs.docker.com/engine/api/v1.35/)
17002// and the --sysctl option to docker run (https://docs.docker.com/engine/reference/run/).
17003//
17004// It is not recommended that you specify network-related systemControls parameters
17005// for multiple containers in a single task that also uses either the awsvpc
17006// or host network mode for the following reasons:
17007//
17008//    * For tasks that use the awsvpc network mode, if you set systemControls
17009//    for any container, it applies to all containers in the task. If you set
17010//    different systemControls for multiple containers in a single task, the
17011//    container that is started last determines which systemControls take effect.
17012//
17013//    * For tasks that use the host network mode, the systemControls parameter
17014//    applies to the container instance's kernel parameter as well as that of
17015//    all containers of any tasks running on that container instance.
17016type SystemControl struct {
17017	_ struct{} `type:"structure"`
17018
17019	// The namespaced kernel parameter for which to set a value.
17020	Namespace *string `locationName:"namespace" type:"string"`
17021
17022	// The value for the namespaced kernel parameter specified in namespace.
17023	Value *string `locationName:"value" type:"string"`
17024}
17025
17026// String returns the string representation
17027func (s SystemControl) String() string {
17028	return awsutil.Prettify(s)
17029}
17030
17031// GoString returns the string representation
17032func (s SystemControl) GoString() string {
17033	return s.String()
17034}
17035
17036// SetNamespace sets the Namespace field's value.
17037func (s *SystemControl) SetNamespace(v string) *SystemControl {
17038	s.Namespace = &v
17039	return s
17040}
17041
17042// SetValue sets the Value field's value.
17043func (s *SystemControl) SetValue(v string) *SystemControl {
17044	s.Value = &v
17045	return s
17046}
17047
17048// The metadata that you apply to a resource to help you categorize and organize
17049// them. Each tag consists of a key and an optional value, both of which you
17050// define.
17051//
17052// The following basic restrictions apply to tags:
17053//
17054//    * Maximum number of tags per resource - 50
17055//
17056//    * For each resource, each tag key must be unique, and each tag key can
17057//    have only one value.
17058//
17059//    * Maximum key length - 128 Unicode characters in UTF-8
17060//
17061//    * Maximum value length - 256 Unicode characters in UTF-8
17062//
17063//    * If your tagging schema is used across multiple services and resources,
17064//    remember that other services may have restrictions on allowed characters.
17065//    Generally allowed characters are: letters, numbers, and spaces representable
17066//    in UTF-8, and the following characters: + - = . _ : / @.
17067//
17068//    * Tag keys and values are case-sensitive.
17069//
17070//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
17071//    as a prefix for either keys or values as it is reserved for AWS use. You
17072//    cannot edit or delete tag keys or values with this prefix. Tags with this
17073//    prefix do not count against your tags per resource limit.
17074type Tag struct {
17075	_ struct{} `type:"structure"`
17076
17077	// One part of a key-value pair that make up a tag. A key is a general label
17078	// that acts like a category for more specific tag values.
17079	Key *string `locationName:"key" min:"1" type:"string"`
17080
17081	// The optional part of a key-value pair that make up a tag. A value acts as
17082	// a descriptor within a tag category (key).
17083	Value *string `locationName:"value" type:"string"`
17084}
17085
17086// String returns the string representation
17087func (s Tag) String() string {
17088	return awsutil.Prettify(s)
17089}
17090
17091// GoString returns the string representation
17092func (s Tag) GoString() string {
17093	return s.String()
17094}
17095
17096// Validate inspects the fields of the type to determine if they are valid.
17097func (s *Tag) Validate() error {
17098	invalidParams := request.ErrInvalidParams{Context: "Tag"}
17099	if s.Key != nil && len(*s.Key) < 1 {
17100		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17101	}
17102
17103	if invalidParams.Len() > 0 {
17104		return invalidParams
17105	}
17106	return nil
17107}
17108
17109// SetKey sets the Key field's value.
17110func (s *Tag) SetKey(v string) *Tag {
17111	s.Key = &v
17112	return s
17113}
17114
17115// SetValue sets the Value field's value.
17116func (s *Tag) SetValue(v string) *Tag {
17117	s.Value = &v
17118	return s
17119}
17120
17121type TagResourceInput struct {
17122	_ struct{} `type:"structure"`
17123
17124	// The Amazon Resource Name (ARN) of the resource to which to add tags. Currently,
17125	// the supported resources are Amazon ECS capacity providers, tasks, services,
17126	// task definitions, clusters, and container instances.
17127	//
17128	// ResourceArn is a required field
17129	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`
17130
17131	// The tags to add to the resource. A tag is an array of key-value pairs.
17132	//
17133	// The following basic restrictions apply to tags:
17134	//
17135	//    * Maximum number of tags per resource - 50
17136	//
17137	//    * For each resource, each tag key must be unique, and each tag key can
17138	//    have only one value.
17139	//
17140	//    * Maximum key length - 128 Unicode characters in UTF-8
17141	//
17142	//    * Maximum value length - 256 Unicode characters in UTF-8
17143	//
17144	//    * If your tagging schema is used across multiple services and resources,
17145	//    remember that other services may have restrictions on allowed characters.
17146	//    Generally allowed characters are: letters, numbers, and spaces representable
17147	//    in UTF-8, and the following characters: + - = . _ : / @.
17148	//
17149	//    * Tag keys and values are case-sensitive.
17150	//
17151	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
17152	//    as a prefix for either keys or values as it is reserved for AWS use. You
17153	//    cannot edit or delete tag keys or values with this prefix. Tags with this
17154	//    prefix do not count against your tags per resource limit.
17155	//
17156	// Tags is a required field
17157	Tags []*Tag `locationName:"tags" type:"list" required:"true"`
17158}
17159
17160// String returns the string representation
17161func (s TagResourceInput) String() string {
17162	return awsutil.Prettify(s)
17163}
17164
17165// GoString returns the string representation
17166func (s TagResourceInput) GoString() string {
17167	return s.String()
17168}
17169
17170// Validate inspects the fields of the type to determine if they are valid.
17171func (s *TagResourceInput) Validate() error {
17172	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
17173	if s.ResourceArn == nil {
17174		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
17175	}
17176	if s.Tags == nil {
17177		invalidParams.Add(request.NewErrParamRequired("Tags"))
17178	}
17179	if s.Tags != nil {
17180		for i, v := range s.Tags {
17181			if v == nil {
17182				continue
17183			}
17184			if err := v.Validate(); err != nil {
17185				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
17186			}
17187		}
17188	}
17189
17190	if invalidParams.Len() > 0 {
17191		return invalidParams
17192	}
17193	return nil
17194}
17195
17196// SetResourceArn sets the ResourceArn field's value.
17197func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
17198	s.ResourceArn = &v
17199	return s
17200}
17201
17202// SetTags sets the Tags field's value.
17203func (s *TagResourceInput) SetTags(v []*Tag) *TagResourceInput {
17204	s.Tags = v
17205	return s
17206}
17207
17208type TagResourceOutput struct {
17209	_ struct{} `type:"structure"`
17210}
17211
17212// String returns the string representation
17213func (s TagResourceOutput) String() string {
17214	return awsutil.Prettify(s)
17215}
17216
17217// GoString returns the string representation
17218func (s TagResourceOutput) GoString() string {
17219	return s.String()
17220}
17221
17222// The specified target could not be found. You can view your available container
17223// instances with ListContainerInstances. Amazon ECS container instances are
17224// cluster-specific and Region-specific.
17225type TargetNotFoundException struct {
17226	_            struct{} `type:"structure"`
17227	respMetadata protocol.ResponseMetadata
17228
17229	Message_ *string `locationName:"message" type:"string"`
17230}
17231
17232// String returns the string representation
17233func (s TargetNotFoundException) String() string {
17234	return awsutil.Prettify(s)
17235}
17236
17237// GoString returns the string representation
17238func (s TargetNotFoundException) GoString() string {
17239	return s.String()
17240}
17241
17242func newErrorTargetNotFoundException(v protocol.ResponseMetadata) error {
17243	return &TargetNotFoundException{
17244		respMetadata: v,
17245	}
17246}
17247
17248// Code returns the exception type name.
17249func (s TargetNotFoundException) Code() string {
17250	return "TargetNotFoundException"
17251}
17252
17253// Message returns the exception's message.
17254func (s TargetNotFoundException) Message() string {
17255	if s.Message_ != nil {
17256		return *s.Message_
17257	}
17258	return ""
17259}
17260
17261// OrigErr always returns nil, satisfies awserr.Error interface.
17262func (s TargetNotFoundException) OrigErr() error {
17263	return nil
17264}
17265
17266func (s TargetNotFoundException) Error() string {
17267	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
17268}
17269
17270// Status code returns the HTTP status code for the request's response error.
17271func (s TargetNotFoundException) StatusCode() int {
17272	return s.respMetadata.StatusCode
17273}
17274
17275// RequestID returns the service's response RequestID for request.
17276func (s TargetNotFoundException) RequestID() string {
17277	return s.respMetadata.RequestID
17278}
17279
17280// Details on a task in a cluster.
17281type Task struct {
17282	_ struct{} `type:"structure"`
17283
17284	// The Elastic Network Adapter associated with the task if the task uses the
17285	// awsvpc network mode.
17286	Attachments []*Attachment `locationName:"attachments" type:"list"`
17287
17288	// The attributes of the task
17289	Attributes []*Attribute `locationName:"attributes" type:"list"`
17290
17291	// The availability zone of the task.
17292	AvailabilityZone *string `locationName:"availabilityZone" type:"string"`
17293
17294	// The capacity provider associated with the task.
17295	CapacityProviderName *string `locationName:"capacityProviderName" type:"string"`
17296
17297	// The ARN of the cluster that hosts the task.
17298	ClusterArn *string `locationName:"clusterArn" type:"string"`
17299
17300	// The connectivity status of a task.
17301	Connectivity *string `locationName:"connectivity" type:"string" enum:"Connectivity"`
17302
17303	// The Unix timestamp for when the task last went into CONNECTED status.
17304	ConnectivityAt *time.Time `locationName:"connectivityAt" type:"timestamp"`
17305
17306	// The ARN of the container instances that host the task.
17307	ContainerInstanceArn *string `locationName:"containerInstanceArn" type:"string"`
17308
17309	// The containers associated with the task.
17310	Containers []*Container `locationName:"containers" type:"list"`
17311
17312	// The number of CPU units used by the task as expressed in a task definition.
17313	// It can be expressed as an integer using CPU units, for example 1024. It can
17314	// also be expressed as a string using vCPUs, for example 1 vCPU or 1 vcpu.
17315	// String values are converted to an integer indicating the CPU units when the
17316	// task definition is registered.
17317	//
17318	// If you are using the EC2 launch type, this field is optional. Supported values
17319	// are between 128 CPU units (0.125 vCPUs) and 10240 CPU units (10 vCPUs).
17320	//
17321	// If you are using the Fargate launch type, this field is required and you
17322	// must use one of the following values, which determines your range of supported
17323	// values for the memory parameter:
17324	//
17325	//    * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB),
17326	//    2048 (2 GB)
17327	//
17328	//    * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072
17329	//    (3 GB), 4096 (4 GB)
17330	//
17331	//    * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096
17332	//    (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
17333	//
17334	//    * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384
17335	//    (16 GB) in increments of 1024 (1 GB)
17336	//
17337	//    * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720
17338	//    (30 GB) in increments of 1024 (1 GB)
17339	Cpu *string `locationName:"cpu" type:"string"`
17340
17341	// The Unix timestamp for when the task was created (the task entered the PENDING
17342	// state).
17343	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`
17344
17345	// The desired status of the task. For more information, see Task Lifecycle
17346	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html).
17347	DesiredStatus *string `locationName:"desiredStatus" type:"string"`
17348
17349	// The Unix timestamp for when the task execution stopped.
17350	ExecutionStoppedAt *time.Time `locationName:"executionStoppedAt" type:"timestamp"`
17351
17352	// The name of the task group associated with the task.
17353	Group *string `locationName:"group" type:"string"`
17354
17355	// The health status for the task, which is determined by the health of the
17356	// essential containers in the task. If all essential containers in the task
17357	// are reporting as HEALTHY, then the task status also reports as HEALTHY. If
17358	// any essential containers in the task are reporting as UNHEALTHY or UNKNOWN,
17359	// then the task status also reports as UNHEALTHY or UNKNOWN, accordingly.
17360	//
17361	// The Amazon ECS container agent does not monitor or report on Docker health
17362	// checks that are embedded in a container image (such as those specified in
17363	// a parent image or from the image's Dockerfile) and not specified in the container
17364	// definition. Health check parameters that are specified in a container definition
17365	// override any Docker health checks that exist in the container image.
17366	HealthStatus *string `locationName:"healthStatus" type:"string" enum:"HealthStatus"`
17367
17368	// The Elastic Inference accelerator associated with the task.
17369	InferenceAccelerators []*InferenceAccelerator `locationName:"inferenceAccelerators" type:"list"`
17370
17371	// The last known status of the task. For more information, see Task Lifecycle
17372	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html).
17373	LastStatus *string `locationName:"lastStatus" type:"string"`
17374
17375	// The launch type on which your task is running. For more information, see
17376	// Amazon ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
17377	// in the Amazon Elastic Container Service Developer Guide.
17378	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
17379
17380	// The amount of memory (in MiB) used by the task as expressed in a task definition.
17381	// It can be expressed as an integer using MiB, for example 1024. It can also
17382	// be expressed as a string using GB, for example 1GB or 1 GB. String values
17383	// are converted to an integer indicating the MiB when the task definition is
17384	// registered.
17385	//
17386	// If you are using the EC2 launch type, this field is optional.
17387	//
17388	// If you are using the Fargate launch type, this field is required and you
17389	// must use one of the following values, which determines your range of supported
17390	// values for the cpu parameter:
17391	//
17392	//    * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25
17393	//    vCPU)
17394	//
17395	//    * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values:
17396	//    512 (.5 vCPU)
17397	//
17398	//    * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
17399	//    (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)
17400	//
17401	//    * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
17402	//    Available cpu values: 2048 (2 vCPU)
17403	//
17404	//    * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) -
17405	//    Available cpu values: 4096 (4 vCPU)
17406	Memory *string `locationName:"memory" type:"string"`
17407
17408	// One or more container overrides.
17409	Overrides *TaskOverride `locationName:"overrides" type:"structure"`
17410
17411	// The platform version on which your task is running. A platform version is
17412	// only specified for tasks using the Fargate launch type. If one is not specified,
17413	// the LATEST platform version is used by default. For more information, see
17414	// AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
17415	// in the Amazon Elastic Container Service Developer Guide.
17416	PlatformVersion *string `locationName:"platformVersion" type:"string"`
17417
17418	// The Unix timestamp for when the container image pull began.
17419	PullStartedAt *time.Time `locationName:"pullStartedAt" type:"timestamp"`
17420
17421	// The Unix timestamp for when the container image pull completed.
17422	PullStoppedAt *time.Time `locationName:"pullStoppedAt" type:"timestamp"`
17423
17424	// The Unix timestamp for when the task started (the task transitioned from
17425	// the PENDING state to the RUNNING state).
17426	StartedAt *time.Time `locationName:"startedAt" type:"timestamp"`
17427
17428	// The tag specified when a task is started. If the task is started by an Amazon
17429	// ECS service, then the startedBy parameter contains the deployment ID of the
17430	// service that starts it.
17431	StartedBy *string `locationName:"startedBy" type:"string"`
17432
17433	// The stop code indicating why a task was stopped. The stoppedReason may contain
17434	// additional details.
17435	StopCode *string `locationName:"stopCode" type:"string" enum:"TaskStopCode"`
17436
17437	// The Unix timestamp for when the task was stopped (the task transitioned from
17438	// the RUNNING state to the STOPPED state).
17439	StoppedAt *time.Time `locationName:"stoppedAt" type:"timestamp"`
17440
17441	// The reason that the task was stopped.
17442	StoppedReason *string `locationName:"stoppedReason" type:"string"`
17443
17444	// The Unix timestamp for when the task stops (transitions from the RUNNING
17445	// state to STOPPED).
17446	StoppingAt *time.Time `locationName:"stoppingAt" type:"timestamp"`
17447
17448	// The metadata that you apply to the task to help you categorize and organize
17449	// them. Each tag consists of a key and an optional value, both of which you
17450	// define.
17451	//
17452	// The following basic restrictions apply to tags:
17453	//
17454	//    * Maximum number of tags per resource - 50
17455	//
17456	//    * For each resource, each tag key must be unique, and each tag key can
17457	//    have only one value.
17458	//
17459	//    * Maximum key length - 128 Unicode characters in UTF-8
17460	//
17461	//    * Maximum value length - 256 Unicode characters in UTF-8
17462	//
17463	//    * If your tagging schema is used across multiple services and resources,
17464	//    remember that other services may have restrictions on allowed characters.
17465	//    Generally allowed characters are: letters, numbers, and spaces representable
17466	//    in UTF-8, and the following characters: + - = . _ : / @.
17467	//
17468	//    * Tag keys and values are case-sensitive.
17469	//
17470	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
17471	//    as a prefix for either keys or values as it is reserved for AWS use. You
17472	//    cannot edit or delete tag keys or values with this prefix. Tags with this
17473	//    prefix do not count against your tags per resource limit.
17474	Tags []*Tag `locationName:"tags" type:"list"`
17475
17476	// The Amazon Resource Name (ARN) of the task.
17477	TaskArn *string `locationName:"taskArn" type:"string"`
17478
17479	// The ARN of the task definition that creates the task.
17480	TaskDefinitionArn *string `locationName:"taskDefinitionArn" type:"string"`
17481
17482	// The version counter for the task. Every time a task experiences a change
17483	// that triggers a CloudWatch event, the version counter is incremented. If
17484	// you are replicating your Amazon ECS task state with CloudWatch Events, you
17485	// can compare the version of a task reported by the Amazon ECS API actions
17486	// with the version reported in CloudWatch Events for the task (inside the detail
17487	// object) to verify that the version in your event stream is current.
17488	Version *int64 `locationName:"version" type:"long"`
17489}
17490
17491// String returns the string representation
17492func (s Task) String() string {
17493	return awsutil.Prettify(s)
17494}
17495
17496// GoString returns the string representation
17497func (s Task) GoString() string {
17498	return s.String()
17499}
17500
17501// SetAttachments sets the Attachments field's value.
17502func (s *Task) SetAttachments(v []*Attachment) *Task {
17503	s.Attachments = v
17504	return s
17505}
17506
17507// SetAttributes sets the Attributes field's value.
17508func (s *Task) SetAttributes(v []*Attribute) *Task {
17509	s.Attributes = v
17510	return s
17511}
17512
17513// SetAvailabilityZone sets the AvailabilityZone field's value.
17514func (s *Task) SetAvailabilityZone(v string) *Task {
17515	s.AvailabilityZone = &v
17516	return s
17517}
17518
17519// SetCapacityProviderName sets the CapacityProviderName field's value.
17520func (s *Task) SetCapacityProviderName(v string) *Task {
17521	s.CapacityProviderName = &v
17522	return s
17523}
17524
17525// SetClusterArn sets the ClusterArn field's value.
17526func (s *Task) SetClusterArn(v string) *Task {
17527	s.ClusterArn = &v
17528	return s
17529}
17530
17531// SetConnectivity sets the Connectivity field's value.
17532func (s *Task) SetConnectivity(v string) *Task {
17533	s.Connectivity = &v
17534	return s
17535}
17536
17537// SetConnectivityAt sets the ConnectivityAt field's value.
17538func (s *Task) SetConnectivityAt(v time.Time) *Task {
17539	s.ConnectivityAt = &v
17540	return s
17541}
17542
17543// SetContainerInstanceArn sets the ContainerInstanceArn field's value.
17544func (s *Task) SetContainerInstanceArn(v string) *Task {
17545	s.ContainerInstanceArn = &v
17546	return s
17547}
17548
17549// SetContainers sets the Containers field's value.
17550func (s *Task) SetContainers(v []*Container) *Task {
17551	s.Containers = v
17552	return s
17553}
17554
17555// SetCpu sets the Cpu field's value.
17556func (s *Task) SetCpu(v string) *Task {
17557	s.Cpu = &v
17558	return s
17559}
17560
17561// SetCreatedAt sets the CreatedAt field's value.
17562func (s *Task) SetCreatedAt(v time.Time) *Task {
17563	s.CreatedAt = &v
17564	return s
17565}
17566
17567// SetDesiredStatus sets the DesiredStatus field's value.
17568func (s *Task) SetDesiredStatus(v string) *Task {
17569	s.DesiredStatus = &v
17570	return s
17571}
17572
17573// SetExecutionStoppedAt sets the ExecutionStoppedAt field's value.
17574func (s *Task) SetExecutionStoppedAt(v time.Time) *Task {
17575	s.ExecutionStoppedAt = &v
17576	return s
17577}
17578
17579// SetGroup sets the Group field's value.
17580func (s *Task) SetGroup(v string) *Task {
17581	s.Group = &v
17582	return s
17583}
17584
17585// SetHealthStatus sets the HealthStatus field's value.
17586func (s *Task) SetHealthStatus(v string) *Task {
17587	s.HealthStatus = &v
17588	return s
17589}
17590
17591// SetInferenceAccelerators sets the InferenceAccelerators field's value.
17592func (s *Task) SetInferenceAccelerators(v []*InferenceAccelerator) *Task {
17593	s.InferenceAccelerators = v
17594	return s
17595}
17596
17597// SetLastStatus sets the LastStatus field's value.
17598func (s *Task) SetLastStatus(v string) *Task {
17599	s.LastStatus = &v
17600	return s
17601}
17602
17603// SetLaunchType sets the LaunchType field's value.
17604func (s *Task) SetLaunchType(v string) *Task {
17605	s.LaunchType = &v
17606	return s
17607}
17608
17609// SetMemory sets the Memory field's value.
17610func (s *Task) SetMemory(v string) *Task {
17611	s.Memory = &v
17612	return s
17613}
17614
17615// SetOverrides sets the Overrides field's value.
17616func (s *Task) SetOverrides(v *TaskOverride) *Task {
17617	s.Overrides = v
17618	return s
17619}
17620
17621// SetPlatformVersion sets the PlatformVersion field's value.
17622func (s *Task) SetPlatformVersion(v string) *Task {
17623	s.PlatformVersion = &v
17624	return s
17625}
17626
17627// SetPullStartedAt sets the PullStartedAt field's value.
17628func (s *Task) SetPullStartedAt(v time.Time) *Task {
17629	s.PullStartedAt = &v
17630	return s
17631}
17632
17633// SetPullStoppedAt sets the PullStoppedAt field's value.
17634func (s *Task) SetPullStoppedAt(v time.Time) *Task {
17635	s.PullStoppedAt = &v
17636	return s
17637}
17638
17639// SetStartedAt sets the StartedAt field's value.
17640func (s *Task) SetStartedAt(v time.Time) *Task {
17641	s.StartedAt = &v
17642	return s
17643}
17644
17645// SetStartedBy sets the StartedBy field's value.
17646func (s *Task) SetStartedBy(v string) *Task {
17647	s.StartedBy = &v
17648	return s
17649}
17650
17651// SetStopCode sets the StopCode field's value.
17652func (s *Task) SetStopCode(v string) *Task {
17653	s.StopCode = &v
17654	return s
17655}
17656
17657// SetStoppedAt sets the StoppedAt field's value.
17658func (s *Task) SetStoppedAt(v time.Time) *Task {
17659	s.StoppedAt = &v
17660	return s
17661}
17662
17663// SetStoppedReason sets the StoppedReason field's value.
17664func (s *Task) SetStoppedReason(v string) *Task {
17665	s.StoppedReason = &v
17666	return s
17667}
17668
17669// SetStoppingAt sets the StoppingAt field's value.
17670func (s *Task) SetStoppingAt(v time.Time) *Task {
17671	s.StoppingAt = &v
17672	return s
17673}
17674
17675// SetTags sets the Tags field's value.
17676func (s *Task) SetTags(v []*Tag) *Task {
17677	s.Tags = v
17678	return s
17679}
17680
17681// SetTaskArn sets the TaskArn field's value.
17682func (s *Task) SetTaskArn(v string) *Task {
17683	s.TaskArn = &v
17684	return s
17685}
17686
17687// SetTaskDefinitionArn sets the TaskDefinitionArn field's value.
17688func (s *Task) SetTaskDefinitionArn(v string) *Task {
17689	s.TaskDefinitionArn = &v
17690	return s
17691}
17692
17693// SetVersion sets the Version field's value.
17694func (s *Task) SetVersion(v int64) *Task {
17695	s.Version = &v
17696	return s
17697}
17698
17699// The details of a task definition which describes the container and volume
17700// definitions of an Amazon Elastic Container Service task. You can specify
17701// which Docker images to use, the required resources, and other configurations
17702// related to launching the task definition through an Amazon ECS service or
17703// task.
17704type TaskDefinition struct {
17705	_ struct{} `type:"structure"`
17706
17707	// The launch type to use with your task. For more information, see Amazon ECS
17708	// Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
17709	// in the Amazon Elastic Container Service Developer Guide.
17710	Compatibilities []*string `locationName:"compatibilities" type:"list"`
17711
17712	// A list of container definitions in JSON format that describe the different
17713	// containers that make up your task. For more information about container definition
17714	// parameters and defaults, see Amazon ECS Task Definitions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html)
17715	// in the Amazon Elastic Container Service Developer Guide.
17716	ContainerDefinitions []*ContainerDefinition `locationName:"containerDefinitions" type:"list"`
17717
17718	// The number of cpu units used by the task. If you are using the EC2 launch
17719	// type, this field is optional and any value can be used. If you are using
17720	// the Fargate launch type, this field is required and you must use one of the
17721	// following values, which determines your range of valid values for the memory
17722	// parameter:
17723	//
17724	//    * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB),
17725	//    2048 (2 GB)
17726	//
17727	//    * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072
17728	//    (3 GB), 4096 (4 GB)
17729	//
17730	//    * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096
17731	//    (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
17732	//
17733	//    * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384
17734	//    (16 GB) in increments of 1024 (1 GB)
17735	//
17736	//    * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720
17737	//    (30 GB) in increments of 1024 (1 GB)
17738	Cpu *string `locationName:"cpu" type:"string"`
17739
17740	// The Amazon Resource Name (ARN) of the task execution role that containers
17741	// in this task can assume. All containers in this task are granted the permissions
17742	// that are specified in this role.
17743	ExecutionRoleArn *string `locationName:"executionRoleArn" type:"string"`
17744
17745	// The name of a family that this task definition is registered to. Up to 255
17746	// letters (uppercase and lowercase), numbers, hyphens, and underscores are
17747	// allowed.
17748	//
17749	// A family groups multiple versions of a task definition. Amazon ECS gives
17750	// the first task definition that you registered to a family a revision number
17751	// of 1. Amazon ECS gives sequential revision numbers to each task definition
17752	// that you add.
17753	Family *string `locationName:"family" type:"string"`
17754
17755	// The Elastic Inference accelerator associated with the task.
17756	InferenceAccelerators []*InferenceAccelerator `locationName:"inferenceAccelerators" type:"list"`
17757
17758	// The IPC resource namespace to use for the containers in the task. The valid
17759	// values are host, task, or none. If host is specified, then all containers
17760	// within the tasks that specified the host IPC mode on the same container instance
17761	// share the same IPC resources with the host Amazon EC2 instance. If task is
17762	// specified, all containers within the specified task share the same IPC resources.
17763	// If none is specified, then IPC resources within the containers of a task
17764	// are private and not shared with other containers in a task or on the container
17765	// instance. If no value is specified, then the IPC resource namespace sharing
17766	// depends on the Docker daemon setting on the container instance. For more
17767	// information, see IPC settings (https://docs.docker.com/engine/reference/run/#ipc-settings---ipc)
17768	// in the Docker run reference.
17769	//
17770	// If the host IPC mode is used, be aware that there is a heightened risk of
17771	// undesired IPC namespace expose. For more information, see Docker security
17772	// (https://docs.docker.com/engine/security/security/).
17773	//
17774	// If you are setting namespaced kernel parameters using systemControls for
17775	// the containers in the task, the following will apply to your IPC resource
17776	// namespace. For more information, see System Controls (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html)
17777	// in the Amazon Elastic Container Service Developer Guide.
17778	//
17779	//    * For tasks that use the host IPC mode, IPC namespace related systemControls
17780	//    are not supported.
17781	//
17782	//    * For tasks that use the task IPC mode, IPC namespace related systemControls
17783	//    will apply to all containers within a task.
17784	//
17785	// This parameter is not supported for Windows containers or tasks using the
17786	// Fargate launch type.
17787	IpcMode *string `locationName:"ipcMode" type:"string" enum:"IpcMode"`
17788
17789	// The amount (in MiB) of memory used by the task.
17790	//
17791	// If using the EC2 launch type, this field is optional and any value can be
17792	// used. If a task-level memory value is specified then the container-level
17793	// memory value is optional.
17794	//
17795	// If using the Fargate launch type, this field is required and you must use
17796	// one of the following values, which determines your range of valid values
17797	// for the cpu parameter:
17798	//
17799	//    * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25
17800	//    vCPU)
17801	//
17802	//    * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values:
17803	//    512 (.5 vCPU)
17804	//
17805	//    * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
17806	//    (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)
17807	//
17808	//    * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
17809	//    Available cpu values: 2048 (2 vCPU)
17810	//
17811	//    * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) -
17812	//    Available cpu values: 4096 (4 vCPU)
17813	Memory *string `locationName:"memory" type:"string"`
17814
17815	// The Docker networking mode to use for the containers in the task. The valid
17816	// values are none, bridge, awsvpc, and host. The default Docker network mode
17817	// is bridge. If you are using the Fargate launch type, the awsvpc network mode
17818	// is required. If you are using the EC2 launch type, any network mode can be
17819	// used. If the network mode is set to none, you cannot specify port mappings
17820	// in your container definitions, and the tasks containers do not have external
17821	// connectivity. The host and awsvpc network modes offer the highest networking
17822	// performance for containers because they use the EC2 network stack instead
17823	// of the virtualized network stack provided by the bridge mode.
17824	//
17825	// With the host and awsvpc network modes, exposed container ports are mapped
17826	// directly to the corresponding host port (for the host network mode) or the
17827	// attached elastic network interface port (for the awsvpc network mode), so
17828	// you cannot take advantage of dynamic host port mappings.
17829	//
17830	// If the network mode is awsvpc, the task is allocated an elastic network interface,
17831	// and you must specify a NetworkConfiguration value when you create a service
17832	// or run a task with the task definition. For more information, see Task Networking
17833	// (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
17834	// in the Amazon Elastic Container Service Developer Guide.
17835	//
17836	// Currently, only Amazon ECS-optimized AMIs, other Amazon Linux variants with
17837	// the ecs-init package, or AWS Fargate infrastructure support the awsvpc network
17838	// mode.
17839	//
17840	// If the network mode is host, you cannot run multiple instantiations of the
17841	// same task on a single container instance when port mappings are used.
17842	//
17843	// Docker for Windows uses different network modes than Docker for Linux. When
17844	// you register a task definition with Windows containers, you must not specify
17845	// a network mode. If you use the console to register a task definition with
17846	// Windows containers, you must choose the <default> network mode object.
17847	//
17848	// For more information, see Network settings (https://docs.docker.com/engine/reference/run/#network-settings)
17849	// in the Docker run reference.
17850	NetworkMode *string `locationName:"networkMode" type:"string" enum:"NetworkMode"`
17851
17852	// The process namespace to use for the containers in the task. The valid values
17853	// are host or task. If host is specified, then all containers within the tasks
17854	// that specified the host PID mode on the same container instance share the
17855	// same process namespace with the host Amazon EC2 instance. If task is specified,
17856	// all containers within the specified task share the same process namespace.
17857	// If no value is specified, the default is a private namespace. For more information,
17858	// see PID settings (https://docs.docker.com/engine/reference/run/#pid-settings---pid)
17859	// in the Docker run reference.
17860	//
17861	// If the host PID mode is used, be aware that there is a heightened risk of
17862	// undesired process namespace expose. For more information, see Docker security
17863	// (https://docs.docker.com/engine/security/security/).
17864	//
17865	// This parameter is not supported for Windows containers or tasks using the
17866	// Fargate launch type.
17867	PidMode *string `locationName:"pidMode" type:"string" enum:"PidMode"`
17868
17869	// An array of placement constraint objects to use for tasks. This field is
17870	// not valid if you are using the Fargate launch type for your task.
17871	PlacementConstraints []*TaskDefinitionPlacementConstraint `locationName:"placementConstraints" type:"list"`
17872
17873	// The configuration details for the App Mesh proxy.
17874	//
17875	// Your Amazon ECS container instances require at least version 1.26.0 of the
17876	// container agent and at least version 1.26.0-1 of the ecs-init package to
17877	// enable a proxy configuration. If your container instances are launched from
17878	// the Amazon ECS-optimized AMI version 20190301 or later, then they contain
17879	// the required versions of the container agent and ecs-init. For more information,
17880	// see Amazon ECS-optimized Linux AMI (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)
17881	// in the Amazon Elastic Container Service Developer Guide.
17882	ProxyConfiguration *ProxyConfiguration `locationName:"proxyConfiguration" type:"structure"`
17883
17884	// The container instance attributes required by your task. This field is not
17885	// valid if you are using the Fargate launch type for your task.
17886	RequiresAttributes []*Attribute `locationName:"requiresAttributes" type:"list"`
17887
17888	// The launch type the task requires. If no value is specified, it will default
17889	// to EC2. Valid values include EC2 and FARGATE.
17890	RequiresCompatibilities []*string `locationName:"requiresCompatibilities" type:"list"`
17891
17892	// The revision of the task in a particular family. The revision is a version
17893	// number of a task definition in a family. When you register a task definition
17894	// for the first time, the revision is 1. Each time that you register a new
17895	// revision of a task definition in the same family, the revision value always
17896	// increases by one, even if you have deregistered previous revisions in this
17897	// family.
17898	Revision *int64 `locationName:"revision" type:"integer"`
17899
17900	// The status of the task definition.
17901	Status *string `locationName:"status" type:"string" enum:"TaskDefinitionStatus"`
17902
17903	// The full Amazon Resource Name (ARN) of the task definition.
17904	TaskDefinitionArn *string `locationName:"taskDefinitionArn" type:"string"`
17905
17906	// The short name or full Amazon Resource Name (ARN) of the AWS Identity and
17907	// Access Management (IAM) role that grants containers in the task permission
17908	// to call AWS APIs on your behalf. For more information, see Amazon ECS Task
17909	// Role (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_IAM_role.html)
17910	// in the Amazon Elastic Container Service Developer Guide.
17911	//
17912	// IAM roles for tasks on Windows require that the -EnableTaskIAMRole option
17913	// is set when you launch the Amazon ECS-optimized Windows AMI. Your containers
17914	// must also run some configuration code in order to take advantage of the feature.
17915	// For more information, see Windows IAM Roles for Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows_task_IAM_roles.html)
17916	// in the Amazon Elastic Container Service Developer Guide.
17917	TaskRoleArn *string `locationName:"taskRoleArn" type:"string"`
17918
17919	// The list of volume definitions for the task.
17920	//
17921	// If your tasks are using the Fargate launch type, the host and sourcePath
17922	// parameters are not supported.
17923	//
17924	// For more information about volume definition parameters and defaults, see
17925	// Amazon ECS Task Definitions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
17926	// in the Amazon Elastic Container Service Developer Guide.
17927	Volumes []*Volume `locationName:"volumes" type:"list"`
17928}
17929
17930// String returns the string representation
17931func (s TaskDefinition) String() string {
17932	return awsutil.Prettify(s)
17933}
17934
17935// GoString returns the string representation
17936func (s TaskDefinition) GoString() string {
17937	return s.String()
17938}
17939
17940// SetCompatibilities sets the Compatibilities field's value.
17941func (s *TaskDefinition) SetCompatibilities(v []*string) *TaskDefinition {
17942	s.Compatibilities = v
17943	return s
17944}
17945
17946// SetContainerDefinitions sets the ContainerDefinitions field's value.
17947func (s *TaskDefinition) SetContainerDefinitions(v []*ContainerDefinition) *TaskDefinition {
17948	s.ContainerDefinitions = v
17949	return s
17950}
17951
17952// SetCpu sets the Cpu field's value.
17953func (s *TaskDefinition) SetCpu(v string) *TaskDefinition {
17954	s.Cpu = &v
17955	return s
17956}
17957
17958// SetExecutionRoleArn sets the ExecutionRoleArn field's value.
17959func (s *TaskDefinition) SetExecutionRoleArn(v string) *TaskDefinition {
17960	s.ExecutionRoleArn = &v
17961	return s
17962}
17963
17964// SetFamily sets the Family field's value.
17965func (s *TaskDefinition) SetFamily(v string) *TaskDefinition {
17966	s.Family = &v
17967	return s
17968}
17969
17970// SetInferenceAccelerators sets the InferenceAccelerators field's value.
17971func (s *TaskDefinition) SetInferenceAccelerators(v []*InferenceAccelerator) *TaskDefinition {
17972	s.InferenceAccelerators = v
17973	return s
17974}
17975
17976// SetIpcMode sets the IpcMode field's value.
17977func (s *TaskDefinition) SetIpcMode(v string) *TaskDefinition {
17978	s.IpcMode = &v
17979	return s
17980}
17981
17982// SetMemory sets the Memory field's value.
17983func (s *TaskDefinition) SetMemory(v string) *TaskDefinition {
17984	s.Memory = &v
17985	return s
17986}
17987
17988// SetNetworkMode sets the NetworkMode field's value.
17989func (s *TaskDefinition) SetNetworkMode(v string) *TaskDefinition {
17990	s.NetworkMode = &v
17991	return s
17992}
17993
17994// SetPidMode sets the PidMode field's value.
17995func (s *TaskDefinition) SetPidMode(v string) *TaskDefinition {
17996	s.PidMode = &v
17997	return s
17998}
17999
18000// SetPlacementConstraints sets the PlacementConstraints field's value.
18001func (s *TaskDefinition) SetPlacementConstraints(v []*TaskDefinitionPlacementConstraint) *TaskDefinition {
18002	s.PlacementConstraints = v
18003	return s
18004}
18005
18006// SetProxyConfiguration sets the ProxyConfiguration field's value.
18007func (s *TaskDefinition) SetProxyConfiguration(v *ProxyConfiguration) *TaskDefinition {
18008	s.ProxyConfiguration = v
18009	return s
18010}
18011
18012// SetRequiresAttributes sets the RequiresAttributes field's value.
18013func (s *TaskDefinition) SetRequiresAttributes(v []*Attribute) *TaskDefinition {
18014	s.RequiresAttributes = v
18015	return s
18016}
18017
18018// SetRequiresCompatibilities sets the RequiresCompatibilities field's value.
18019func (s *TaskDefinition) SetRequiresCompatibilities(v []*string) *TaskDefinition {
18020	s.RequiresCompatibilities = v
18021	return s
18022}
18023
18024// SetRevision sets the Revision field's value.
18025func (s *TaskDefinition) SetRevision(v int64) *TaskDefinition {
18026	s.Revision = &v
18027	return s
18028}
18029
18030// SetStatus sets the Status field's value.
18031func (s *TaskDefinition) SetStatus(v string) *TaskDefinition {
18032	s.Status = &v
18033	return s
18034}
18035
18036// SetTaskDefinitionArn sets the TaskDefinitionArn field's value.
18037func (s *TaskDefinition) SetTaskDefinitionArn(v string) *TaskDefinition {
18038	s.TaskDefinitionArn = &v
18039	return s
18040}
18041
18042// SetTaskRoleArn sets the TaskRoleArn field's value.
18043func (s *TaskDefinition) SetTaskRoleArn(v string) *TaskDefinition {
18044	s.TaskRoleArn = &v
18045	return s
18046}
18047
18048// SetVolumes sets the Volumes field's value.
18049func (s *TaskDefinition) SetVolumes(v []*Volume) *TaskDefinition {
18050	s.Volumes = v
18051	return s
18052}
18053
18054// An object representing a constraint on task placement in the task definition.
18055// For more information, see Task Placement Constraints (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html)
18056// in the Amazon Elastic Container Service Developer Guide.
18057//
18058// If you are using the Fargate launch type, task placement constraints are
18059// not supported.
18060type TaskDefinitionPlacementConstraint struct {
18061	_ struct{} `type:"structure"`
18062
18063	// A cluster query language expression to apply to the constraint. For more
18064	// information, see Cluster Query Language (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html)
18065	// in the Amazon Elastic Container Service Developer Guide.
18066	Expression *string `locationName:"expression" type:"string"`
18067
18068	// The type of constraint. The MemberOf constraint restricts selection to be
18069	// from a group of valid candidates.
18070	Type *string `locationName:"type" type:"string" enum:"TaskDefinitionPlacementConstraintType"`
18071}
18072
18073// String returns the string representation
18074func (s TaskDefinitionPlacementConstraint) String() string {
18075	return awsutil.Prettify(s)
18076}
18077
18078// GoString returns the string representation
18079func (s TaskDefinitionPlacementConstraint) GoString() string {
18080	return s.String()
18081}
18082
18083// SetExpression sets the Expression field's value.
18084func (s *TaskDefinitionPlacementConstraint) SetExpression(v string) *TaskDefinitionPlacementConstraint {
18085	s.Expression = &v
18086	return s
18087}
18088
18089// SetType sets the Type field's value.
18090func (s *TaskDefinitionPlacementConstraint) SetType(v string) *TaskDefinitionPlacementConstraint {
18091	s.Type = &v
18092	return s
18093}
18094
18095// The overrides associated with a task.
18096type TaskOverride struct {
18097	_ struct{} `type:"structure"`
18098
18099	// One or more container overrides sent to a task.
18100	ContainerOverrides []*ContainerOverride `locationName:"containerOverrides" type:"list"`
18101
18102	// The cpu override for the task.
18103	Cpu *string `locationName:"cpu" type:"string"`
18104
18105	// The Amazon Resource Name (ARN) of the task execution role that the Amazon
18106	// ECS container agent and the Docker daemon can assume.
18107	ExecutionRoleArn *string `locationName:"executionRoleArn" type:"string"`
18108
18109	// The Elastic Inference accelerator override for the task.
18110	InferenceAcceleratorOverrides []*InferenceAcceleratorOverride `locationName:"inferenceAcceleratorOverrides" type:"list"`
18111
18112	// The memory override for the task.
18113	Memory *string `locationName:"memory" type:"string"`
18114
18115	// The Amazon Resource Name (ARN) of the IAM role that containers in this task
18116	// can assume. All containers in this task are granted the permissions that
18117	// are specified in this role.
18118	TaskRoleArn *string `locationName:"taskRoleArn" type:"string"`
18119}
18120
18121// String returns the string representation
18122func (s TaskOverride) String() string {
18123	return awsutil.Prettify(s)
18124}
18125
18126// GoString returns the string representation
18127func (s TaskOverride) GoString() string {
18128	return s.String()
18129}
18130
18131// Validate inspects the fields of the type to determine if they are valid.
18132func (s *TaskOverride) Validate() error {
18133	invalidParams := request.ErrInvalidParams{Context: "TaskOverride"}
18134	if s.ContainerOverrides != nil {
18135		for i, v := range s.ContainerOverrides {
18136			if v == nil {
18137				continue
18138			}
18139			if err := v.Validate(); err != nil {
18140				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ContainerOverrides", i), err.(request.ErrInvalidParams))
18141			}
18142		}
18143	}
18144
18145	if invalidParams.Len() > 0 {
18146		return invalidParams
18147	}
18148	return nil
18149}
18150
18151// SetContainerOverrides sets the ContainerOverrides field's value.
18152func (s *TaskOverride) SetContainerOverrides(v []*ContainerOverride) *TaskOverride {
18153	s.ContainerOverrides = v
18154	return s
18155}
18156
18157// SetCpu sets the Cpu field's value.
18158func (s *TaskOverride) SetCpu(v string) *TaskOverride {
18159	s.Cpu = &v
18160	return s
18161}
18162
18163// SetExecutionRoleArn sets the ExecutionRoleArn field's value.
18164func (s *TaskOverride) SetExecutionRoleArn(v string) *TaskOverride {
18165	s.ExecutionRoleArn = &v
18166	return s
18167}
18168
18169// SetInferenceAcceleratorOverrides sets the InferenceAcceleratorOverrides field's value.
18170func (s *TaskOverride) SetInferenceAcceleratorOverrides(v []*InferenceAcceleratorOverride) *TaskOverride {
18171	s.InferenceAcceleratorOverrides = v
18172	return s
18173}
18174
18175// SetMemory sets the Memory field's value.
18176func (s *TaskOverride) SetMemory(v string) *TaskOverride {
18177	s.Memory = &v
18178	return s
18179}
18180
18181// SetTaskRoleArn sets the TaskRoleArn field's value.
18182func (s *TaskOverride) SetTaskRoleArn(v string) *TaskOverride {
18183	s.TaskRoleArn = &v
18184	return s
18185}
18186
18187// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
18188// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
18189// desired number of tasks, how many tasks are running, and whether the task
18190// set serves production traffic.
18191type TaskSet struct {
18192	_ struct{} `type:"structure"`
18193
18194	// The capacity provider strategy associated with the task set.
18195	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
18196
18197	// The Amazon Resource Name (ARN) of the cluster that the service that hosts
18198	// the task set exists in.
18199	ClusterArn *string `locationName:"clusterArn" type:"string"`
18200
18201	// The computed desired count for the task set. This is calculated by multiplying
18202	// the service's desiredCount by the task set's scale percentage. The result
18203	// is always rounded up. For example, if the computed desired count is 1.2,
18204	// it rounds up to 2 tasks.
18205	ComputedDesiredCount *int64 `locationName:"computedDesiredCount" type:"integer"`
18206
18207	// The Unix timestamp for when the task set was created.
18208	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"`
18209
18210	// The external ID associated with the task set.
18211	//
18212	// If a task set is created by an AWS CodeDeploy deployment, the externalId
18213	// parameter contains the AWS CodeDeploy deployment ID.
18214	//
18215	// If a task set is created for an external deployment and is associated with
18216	// a service discovery registry, the externalId parameter contains the ECS_TASK_SET_EXTERNAL_ID
18217	// AWS Cloud Map attribute.
18218	ExternalId *string `locationName:"externalId" type:"string"`
18219
18220	// The ID of the task set.
18221	Id *string `locationName:"id" type:"string"`
18222
18223	// The launch type the tasks in the task set are using. For more information,
18224	// see Amazon ECS Launch Types (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
18225	// in the Amazon Elastic Container Service Developer Guide.
18226	LaunchType *string `locationName:"launchType" type:"string" enum:"LaunchType"`
18227
18228	// Details on a load balancer that is used with a task set.
18229	LoadBalancers []*LoadBalancer `locationName:"loadBalancers" type:"list"`
18230
18231	// The network configuration for the task set.
18232	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
18233
18234	// The number of tasks in the task set that are in the PENDING status during
18235	// a deployment. A task in the PENDING state is preparing to enter the RUNNING
18236	// state. A task set enters the PENDING status when it launches for the first
18237	// time or when it is restarted after being in the STOPPED state.
18238	PendingCount *int64 `locationName:"pendingCount" type:"integer"`
18239
18240	// The platform version on which the tasks in the task set are running. A platform
18241	// version is only specified for tasks using the Fargate launch type. If one
18242	// is not specified, the LATEST platform version is used by default. For more
18243	// information, see AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
18244	// in the Amazon Elastic Container Service Developer Guide.
18245	PlatformVersion *string `locationName:"platformVersion" type:"string"`
18246
18247	// The number of tasks in the task set that are in the RUNNING status during
18248	// a deployment. A task in the RUNNING state is running and ready for use.
18249	RunningCount *int64 `locationName:"runningCount" type:"integer"`
18250
18251	// A floating-point percentage of the desired number of tasks to place and keep
18252	// running in the task set.
18253	Scale *Scale `locationName:"scale" type:"structure"`
18254
18255	// The Amazon Resource Name (ARN) of the service the task set exists in.
18256	ServiceArn *string `locationName:"serviceArn" type:"string"`
18257
18258	// The details of the service discovery registries to assign to this task set.
18259	// For more information, see Service Discovery (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).
18260	ServiceRegistries []*ServiceRegistry `locationName:"serviceRegistries" type:"list"`
18261
18262	// The stability status, which indicates whether the task set has reached a
18263	// steady state. If the following conditions are met, the task set will be in
18264	// STEADY_STATE:
18265	//
18266	//    * The task runningCount is equal to the computedDesiredCount.
18267	//
18268	//    * The pendingCount is 0.
18269	//
18270	//    * There are no tasks running on container instances in the DRAINING status.
18271	//
18272	//    * All tasks are reporting a healthy status from the load balancers, service
18273	//    discovery, and container health checks.
18274	//
18275	// If any of those conditions are not met, the stability status returns STABILIZING.
18276	StabilityStatus *string `locationName:"stabilityStatus" type:"string" enum:"StabilityStatus"`
18277
18278	// The Unix timestamp for when the task set stability status was retrieved.
18279	StabilityStatusAt *time.Time `locationName:"stabilityStatusAt" type:"timestamp"`
18280
18281	// The tag specified when a task set is started. If the task set is created
18282	// by an AWS CodeDeploy deployment, the startedBy parameter is CODE_DEPLOY.
18283	// For a task set created for an external deployment, the startedBy field isn't
18284	// used.
18285	StartedBy *string `locationName:"startedBy" type:"string"`
18286
18287	// The status of the task set. The following describes each state:
18288	//
18289	// PRIMARY
18290	//
18291	// The task set is serving production traffic.
18292	//
18293	// ACTIVE
18294	//
18295	// The task set is not serving production traffic.
18296	//
18297	// DRAINING
18298	//
18299	// The tasks in the task set are being stopped and their corresponding targets
18300	// are being deregistered from their target group.
18301	Status *string `locationName:"status" type:"string"`
18302
18303	// The metadata that you apply to the task set to help you categorize and organize
18304	// them. Each tag consists of a key and an optional value, both of which you
18305	// define.
18306	//
18307	// The following basic restrictions apply to tags:
18308	//
18309	//    * Maximum number of tags per resource - 50
18310	//
18311	//    * For each resource, each tag key must be unique, and each tag key can
18312	//    have only one value.
18313	//
18314	//    * Maximum key length - 128 Unicode characters in UTF-8
18315	//
18316	//    * Maximum value length - 256 Unicode characters in UTF-8
18317	//
18318	//    * If your tagging schema is used across multiple services and resources,
18319	//    remember that other services may have restrictions on allowed characters.
18320	//    Generally allowed characters are: letters, numbers, and spaces representable
18321	//    in UTF-8, and the following characters: + - = . _ : / @.
18322	//
18323	//    * Tag keys and values are case-sensitive.
18324	//
18325	//    * Do not use aws:, AWS:, or any upper or lowercase combination of such
18326	//    as a prefix for either keys or values as it is reserved for AWS use. You
18327	//    cannot edit or delete tag keys or values with this prefix. Tags with this
18328	//    prefix do not count against your tags per resource limit.
18329	Tags []*Tag `locationName:"tags" type:"list"`
18330
18331	// The task definition the task set is using.
18332	TaskDefinition *string `locationName:"taskDefinition" type:"string"`
18333
18334	// The Amazon Resource Name (ARN) of the task set.
18335	TaskSetArn *string `locationName:"taskSetArn" type:"string"`
18336
18337	// The Unix timestamp for when the task set was last updated.
18338	UpdatedAt *time.Time `locationName:"updatedAt" type:"timestamp"`
18339}
18340
18341// String returns the string representation
18342func (s TaskSet) String() string {
18343	return awsutil.Prettify(s)
18344}
18345
18346// GoString returns the string representation
18347func (s TaskSet) GoString() string {
18348	return s.String()
18349}
18350
18351// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
18352func (s *TaskSet) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *TaskSet {
18353	s.CapacityProviderStrategy = v
18354	return s
18355}
18356
18357// SetClusterArn sets the ClusterArn field's value.
18358func (s *TaskSet) SetClusterArn(v string) *TaskSet {
18359	s.ClusterArn = &v
18360	return s
18361}
18362
18363// SetComputedDesiredCount sets the ComputedDesiredCount field's value.
18364func (s *TaskSet) SetComputedDesiredCount(v int64) *TaskSet {
18365	s.ComputedDesiredCount = &v
18366	return s
18367}
18368
18369// SetCreatedAt sets the CreatedAt field's value.
18370func (s *TaskSet) SetCreatedAt(v time.Time) *TaskSet {
18371	s.CreatedAt = &v
18372	return s
18373}
18374
18375// SetExternalId sets the ExternalId field's value.
18376func (s *TaskSet) SetExternalId(v string) *TaskSet {
18377	s.ExternalId = &v
18378	return s
18379}
18380
18381// SetId sets the Id field's value.
18382func (s *TaskSet) SetId(v string) *TaskSet {
18383	s.Id = &v
18384	return s
18385}
18386
18387// SetLaunchType sets the LaunchType field's value.
18388func (s *TaskSet) SetLaunchType(v string) *TaskSet {
18389	s.LaunchType = &v
18390	return s
18391}
18392
18393// SetLoadBalancers sets the LoadBalancers field's value.
18394func (s *TaskSet) SetLoadBalancers(v []*LoadBalancer) *TaskSet {
18395	s.LoadBalancers = v
18396	return s
18397}
18398
18399// SetNetworkConfiguration sets the NetworkConfiguration field's value.
18400func (s *TaskSet) SetNetworkConfiguration(v *NetworkConfiguration) *TaskSet {
18401	s.NetworkConfiguration = v
18402	return s
18403}
18404
18405// SetPendingCount sets the PendingCount field's value.
18406func (s *TaskSet) SetPendingCount(v int64) *TaskSet {
18407	s.PendingCount = &v
18408	return s
18409}
18410
18411// SetPlatformVersion sets the PlatformVersion field's value.
18412func (s *TaskSet) SetPlatformVersion(v string) *TaskSet {
18413	s.PlatformVersion = &v
18414	return s
18415}
18416
18417// SetRunningCount sets the RunningCount field's value.
18418func (s *TaskSet) SetRunningCount(v int64) *TaskSet {
18419	s.RunningCount = &v
18420	return s
18421}
18422
18423// SetScale sets the Scale field's value.
18424func (s *TaskSet) SetScale(v *Scale) *TaskSet {
18425	s.Scale = v
18426	return s
18427}
18428
18429// SetServiceArn sets the ServiceArn field's value.
18430func (s *TaskSet) SetServiceArn(v string) *TaskSet {
18431	s.ServiceArn = &v
18432	return s
18433}
18434
18435// SetServiceRegistries sets the ServiceRegistries field's value.
18436func (s *TaskSet) SetServiceRegistries(v []*ServiceRegistry) *TaskSet {
18437	s.ServiceRegistries = v
18438	return s
18439}
18440
18441// SetStabilityStatus sets the StabilityStatus field's value.
18442func (s *TaskSet) SetStabilityStatus(v string) *TaskSet {
18443	s.StabilityStatus = &v
18444	return s
18445}
18446
18447// SetStabilityStatusAt sets the StabilityStatusAt field's value.
18448func (s *TaskSet) SetStabilityStatusAt(v time.Time) *TaskSet {
18449	s.StabilityStatusAt = &v
18450	return s
18451}
18452
18453// SetStartedBy sets the StartedBy field's value.
18454func (s *TaskSet) SetStartedBy(v string) *TaskSet {
18455	s.StartedBy = &v
18456	return s
18457}
18458
18459// SetStatus sets the Status field's value.
18460func (s *TaskSet) SetStatus(v string) *TaskSet {
18461	s.Status = &v
18462	return s
18463}
18464
18465// SetTags sets the Tags field's value.
18466func (s *TaskSet) SetTags(v []*Tag) *TaskSet {
18467	s.Tags = v
18468	return s
18469}
18470
18471// SetTaskDefinition sets the TaskDefinition field's value.
18472func (s *TaskSet) SetTaskDefinition(v string) *TaskSet {
18473	s.TaskDefinition = &v
18474	return s
18475}
18476
18477// SetTaskSetArn sets the TaskSetArn field's value.
18478func (s *TaskSet) SetTaskSetArn(v string) *TaskSet {
18479	s.TaskSetArn = &v
18480	return s
18481}
18482
18483// SetUpdatedAt sets the UpdatedAt field's value.
18484func (s *TaskSet) SetUpdatedAt(v time.Time) *TaskSet {
18485	s.UpdatedAt = &v
18486	return s
18487}
18488
18489// The specified task set could not be found. You can view your available task
18490// sets with DescribeTaskSets. Task sets are specific to each cluster, service
18491// and Region.
18492type TaskSetNotFoundException struct {
18493	_            struct{} `type:"structure"`
18494	respMetadata protocol.ResponseMetadata
18495
18496	Message_ *string `locationName:"message" type:"string"`
18497}
18498
18499// String returns the string representation
18500func (s TaskSetNotFoundException) String() string {
18501	return awsutil.Prettify(s)
18502}
18503
18504// GoString returns the string representation
18505func (s TaskSetNotFoundException) GoString() string {
18506	return s.String()
18507}
18508
18509func newErrorTaskSetNotFoundException(v protocol.ResponseMetadata) error {
18510	return &TaskSetNotFoundException{
18511		respMetadata: v,
18512	}
18513}
18514
18515// Code returns the exception type name.
18516func (s TaskSetNotFoundException) Code() string {
18517	return "TaskSetNotFoundException"
18518}
18519
18520// Message returns the exception's message.
18521func (s TaskSetNotFoundException) Message() string {
18522	if s.Message_ != nil {
18523		return *s.Message_
18524	}
18525	return ""
18526}
18527
18528// OrigErr always returns nil, satisfies awserr.Error interface.
18529func (s TaskSetNotFoundException) OrigErr() error {
18530	return nil
18531}
18532
18533func (s TaskSetNotFoundException) Error() string {
18534	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
18535}
18536
18537// Status code returns the HTTP status code for the request's response error.
18538func (s TaskSetNotFoundException) StatusCode() int {
18539	return s.respMetadata.StatusCode
18540}
18541
18542// RequestID returns the service's response RequestID for request.
18543func (s TaskSetNotFoundException) RequestID() string {
18544	return s.respMetadata.RequestID
18545}
18546
18547// The container path, mount options, and size of the tmpfs mount.
18548type Tmpfs struct {
18549	_ struct{} `type:"structure"`
18550
18551	// The absolute file path where the tmpfs volume is to be mounted.
18552	//
18553	// ContainerPath is a required field
18554	ContainerPath *string `locationName:"containerPath" type:"string" required:"true"`
18555
18556	// The list of tmpfs volume mount options.
18557	//
18558	// Valid values: "defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev"
18559	// | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" |
18560	// "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind"
18561	// | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared"
18562	// | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime"
18563	// | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"
18564	MountOptions []*string `locationName:"mountOptions" type:"list"`
18565
18566	// The size (in MiB) of the tmpfs volume.
18567	//
18568	// Size is a required field
18569	Size *int64 `locationName:"size" type:"integer" required:"true"`
18570}
18571
18572// String returns the string representation
18573func (s Tmpfs) String() string {
18574	return awsutil.Prettify(s)
18575}
18576
18577// GoString returns the string representation
18578func (s Tmpfs) GoString() string {
18579	return s.String()
18580}
18581
18582// Validate inspects the fields of the type to determine if they are valid.
18583func (s *Tmpfs) Validate() error {
18584	invalidParams := request.ErrInvalidParams{Context: "Tmpfs"}
18585	if s.ContainerPath == nil {
18586		invalidParams.Add(request.NewErrParamRequired("ContainerPath"))
18587	}
18588	if s.Size == nil {
18589		invalidParams.Add(request.NewErrParamRequired("Size"))
18590	}
18591
18592	if invalidParams.Len() > 0 {
18593		return invalidParams
18594	}
18595	return nil
18596}
18597
18598// SetContainerPath sets the ContainerPath field's value.
18599func (s *Tmpfs) SetContainerPath(v string) *Tmpfs {
18600	s.ContainerPath = &v
18601	return s
18602}
18603
18604// SetMountOptions sets the MountOptions field's value.
18605func (s *Tmpfs) SetMountOptions(v []*string) *Tmpfs {
18606	s.MountOptions = v
18607	return s
18608}
18609
18610// SetSize sets the Size field's value.
18611func (s *Tmpfs) SetSize(v int64) *Tmpfs {
18612	s.Size = &v
18613	return s
18614}
18615
18616// The ulimit settings to pass to the container.
18617type Ulimit struct {
18618	_ struct{} `type:"structure"`
18619
18620	// The hard limit for the ulimit type.
18621	//
18622	// HardLimit is a required field
18623	HardLimit *int64 `locationName:"hardLimit" type:"integer" required:"true"`
18624
18625	// The type of the ulimit.
18626	//
18627	// Name is a required field
18628	Name *string `locationName:"name" type:"string" required:"true" enum:"UlimitName"`
18629
18630	// The soft limit for the ulimit type.
18631	//
18632	// SoftLimit is a required field
18633	SoftLimit *int64 `locationName:"softLimit" type:"integer" required:"true"`
18634}
18635
18636// String returns the string representation
18637func (s Ulimit) String() string {
18638	return awsutil.Prettify(s)
18639}
18640
18641// GoString returns the string representation
18642func (s Ulimit) GoString() string {
18643	return s.String()
18644}
18645
18646// Validate inspects the fields of the type to determine if they are valid.
18647func (s *Ulimit) Validate() error {
18648	invalidParams := request.ErrInvalidParams{Context: "Ulimit"}
18649	if s.HardLimit == nil {
18650		invalidParams.Add(request.NewErrParamRequired("HardLimit"))
18651	}
18652	if s.Name == nil {
18653		invalidParams.Add(request.NewErrParamRequired("Name"))
18654	}
18655	if s.SoftLimit == nil {
18656		invalidParams.Add(request.NewErrParamRequired("SoftLimit"))
18657	}
18658
18659	if invalidParams.Len() > 0 {
18660		return invalidParams
18661	}
18662	return nil
18663}
18664
18665// SetHardLimit sets the HardLimit field's value.
18666func (s *Ulimit) SetHardLimit(v int64) *Ulimit {
18667	s.HardLimit = &v
18668	return s
18669}
18670
18671// SetName sets the Name field's value.
18672func (s *Ulimit) SetName(v string) *Ulimit {
18673	s.Name = &v
18674	return s
18675}
18676
18677// SetSoftLimit sets the SoftLimit field's value.
18678func (s *Ulimit) SetSoftLimit(v int64) *Ulimit {
18679	s.SoftLimit = &v
18680	return s
18681}
18682
18683// The specified task is not supported in this Region.
18684type UnsupportedFeatureException struct {
18685	_            struct{} `type:"structure"`
18686	respMetadata protocol.ResponseMetadata
18687
18688	Message_ *string `locationName:"message" type:"string"`
18689}
18690
18691// String returns the string representation
18692func (s UnsupportedFeatureException) String() string {
18693	return awsutil.Prettify(s)
18694}
18695
18696// GoString returns the string representation
18697func (s UnsupportedFeatureException) GoString() string {
18698	return s.String()
18699}
18700
18701func newErrorUnsupportedFeatureException(v protocol.ResponseMetadata) error {
18702	return &UnsupportedFeatureException{
18703		respMetadata: v,
18704	}
18705}
18706
18707// Code returns the exception type name.
18708func (s UnsupportedFeatureException) Code() string {
18709	return "UnsupportedFeatureException"
18710}
18711
18712// Message returns the exception's message.
18713func (s UnsupportedFeatureException) Message() string {
18714	if s.Message_ != nil {
18715		return *s.Message_
18716	}
18717	return ""
18718}
18719
18720// OrigErr always returns nil, satisfies awserr.Error interface.
18721func (s UnsupportedFeatureException) OrigErr() error {
18722	return nil
18723}
18724
18725func (s UnsupportedFeatureException) Error() string {
18726	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
18727}
18728
18729// Status code returns the HTTP status code for the request's response error.
18730func (s UnsupportedFeatureException) StatusCode() int {
18731	return s.respMetadata.StatusCode
18732}
18733
18734// RequestID returns the service's response RequestID for request.
18735func (s UnsupportedFeatureException) RequestID() string {
18736	return s.respMetadata.RequestID
18737}
18738
18739type UntagResourceInput struct {
18740	_ struct{} `type:"structure"`
18741
18742	// The Amazon Resource Name (ARN) of the resource from which to delete tags.
18743	// Currently, the supported resources are Amazon ECS capacity providers, tasks,
18744	// services, task definitions, clusters, and container instances.
18745	//
18746	// ResourceArn is a required field
18747	ResourceArn *string `locationName:"resourceArn" type:"string" required:"true"`
18748
18749	// The keys of the tags to be removed.
18750	//
18751	// TagKeys is a required field
18752	TagKeys []*string `locationName:"tagKeys" type:"list" required:"true"`
18753}
18754
18755// String returns the string representation
18756func (s UntagResourceInput) String() string {
18757	return awsutil.Prettify(s)
18758}
18759
18760// GoString returns the string representation
18761func (s UntagResourceInput) GoString() string {
18762	return s.String()
18763}
18764
18765// Validate inspects the fields of the type to determine if they are valid.
18766func (s *UntagResourceInput) Validate() error {
18767	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
18768	if s.ResourceArn == nil {
18769		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
18770	}
18771	if s.TagKeys == nil {
18772		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
18773	}
18774
18775	if invalidParams.Len() > 0 {
18776		return invalidParams
18777	}
18778	return nil
18779}
18780
18781// SetResourceArn sets the ResourceArn field's value.
18782func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
18783	s.ResourceArn = &v
18784	return s
18785}
18786
18787// SetTagKeys sets the TagKeys field's value.
18788func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
18789	s.TagKeys = v
18790	return s
18791}
18792
18793type UntagResourceOutput struct {
18794	_ struct{} `type:"structure"`
18795}
18796
18797// String returns the string representation
18798func (s UntagResourceOutput) String() string {
18799	return awsutil.Prettify(s)
18800}
18801
18802// GoString returns the string representation
18803func (s UntagResourceOutput) GoString() string {
18804	return s.String()
18805}
18806
18807type UpdateClusterSettingsInput struct {
18808	_ struct{} `type:"structure"`
18809
18810	// The name of the cluster to modify the settings for.
18811	//
18812	// Cluster is a required field
18813	Cluster *string `locationName:"cluster" type:"string" required:"true"`
18814
18815	// The setting to use by default for a cluster. This parameter is used to enable
18816	// CloudWatch Container Insights for a cluster. If this value is specified,
18817	// it will override the containerInsights value set with PutAccountSetting or
18818	// PutAccountSettingDefault.
18819	//
18820	// Settings is a required field
18821	Settings []*ClusterSetting `locationName:"settings" type:"list" required:"true"`
18822}
18823
18824// String returns the string representation
18825func (s UpdateClusterSettingsInput) String() string {
18826	return awsutil.Prettify(s)
18827}
18828
18829// GoString returns the string representation
18830func (s UpdateClusterSettingsInput) GoString() string {
18831	return s.String()
18832}
18833
18834// Validate inspects the fields of the type to determine if they are valid.
18835func (s *UpdateClusterSettingsInput) Validate() error {
18836	invalidParams := request.ErrInvalidParams{Context: "UpdateClusterSettingsInput"}
18837	if s.Cluster == nil {
18838		invalidParams.Add(request.NewErrParamRequired("Cluster"))
18839	}
18840	if s.Settings == nil {
18841		invalidParams.Add(request.NewErrParamRequired("Settings"))
18842	}
18843
18844	if invalidParams.Len() > 0 {
18845		return invalidParams
18846	}
18847	return nil
18848}
18849
18850// SetCluster sets the Cluster field's value.
18851func (s *UpdateClusterSettingsInput) SetCluster(v string) *UpdateClusterSettingsInput {
18852	s.Cluster = &v
18853	return s
18854}
18855
18856// SetSettings sets the Settings field's value.
18857func (s *UpdateClusterSettingsInput) SetSettings(v []*ClusterSetting) *UpdateClusterSettingsInput {
18858	s.Settings = v
18859	return s
18860}
18861
18862type UpdateClusterSettingsOutput struct {
18863	_ struct{} `type:"structure"`
18864
18865	// A regional grouping of one or more container instances on which you can run
18866	// task requests. Each account receives a default cluster the first time you
18867	// use the Amazon ECS service, but you may also create other clusters. Clusters
18868	// may contain more than one instance type simultaneously.
18869	Cluster *Cluster `locationName:"cluster" type:"structure"`
18870}
18871
18872// String returns the string representation
18873func (s UpdateClusterSettingsOutput) String() string {
18874	return awsutil.Prettify(s)
18875}
18876
18877// GoString returns the string representation
18878func (s UpdateClusterSettingsOutput) GoString() string {
18879	return s.String()
18880}
18881
18882// SetCluster sets the Cluster field's value.
18883func (s *UpdateClusterSettingsOutput) SetCluster(v *Cluster) *UpdateClusterSettingsOutput {
18884	s.Cluster = v
18885	return s
18886}
18887
18888type UpdateContainerAgentInput struct {
18889	_ struct{} `type:"structure"`
18890
18891	// The short name or full Amazon Resource Name (ARN) of the cluster that your
18892	// container instance is running on. If you do not specify a cluster, the default
18893	// cluster is assumed.
18894	Cluster *string `locationName:"cluster" type:"string"`
18895
18896	// The container instance ID or full ARN entries for the container instance
18897	// on which you would like to update the Amazon ECS container agent.
18898	//
18899	// ContainerInstance is a required field
18900	ContainerInstance *string `locationName:"containerInstance" type:"string" required:"true"`
18901}
18902
18903// String returns the string representation
18904func (s UpdateContainerAgentInput) String() string {
18905	return awsutil.Prettify(s)
18906}
18907
18908// GoString returns the string representation
18909func (s UpdateContainerAgentInput) GoString() string {
18910	return s.String()
18911}
18912
18913// Validate inspects the fields of the type to determine if they are valid.
18914func (s *UpdateContainerAgentInput) Validate() error {
18915	invalidParams := request.ErrInvalidParams{Context: "UpdateContainerAgentInput"}
18916	if s.ContainerInstance == nil {
18917		invalidParams.Add(request.NewErrParamRequired("ContainerInstance"))
18918	}
18919
18920	if invalidParams.Len() > 0 {
18921		return invalidParams
18922	}
18923	return nil
18924}
18925
18926// SetCluster sets the Cluster field's value.
18927func (s *UpdateContainerAgentInput) SetCluster(v string) *UpdateContainerAgentInput {
18928	s.Cluster = &v
18929	return s
18930}
18931
18932// SetContainerInstance sets the ContainerInstance field's value.
18933func (s *UpdateContainerAgentInput) SetContainerInstance(v string) *UpdateContainerAgentInput {
18934	s.ContainerInstance = &v
18935	return s
18936}
18937
18938type UpdateContainerAgentOutput struct {
18939	_ struct{} `type:"structure"`
18940
18941	// The container instance for which the container agent was updated.
18942	ContainerInstance *ContainerInstance `locationName:"containerInstance" type:"structure"`
18943}
18944
18945// String returns the string representation
18946func (s UpdateContainerAgentOutput) String() string {
18947	return awsutil.Prettify(s)
18948}
18949
18950// GoString returns the string representation
18951func (s UpdateContainerAgentOutput) GoString() string {
18952	return s.String()
18953}
18954
18955// SetContainerInstance sets the ContainerInstance field's value.
18956func (s *UpdateContainerAgentOutput) SetContainerInstance(v *ContainerInstance) *UpdateContainerAgentOutput {
18957	s.ContainerInstance = v
18958	return s
18959}
18960
18961type UpdateContainerInstancesStateInput struct {
18962	_ struct{} `type:"structure"`
18963
18964	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
18965	// the container instance to update. If you do not specify a cluster, the default
18966	// cluster is assumed.
18967	Cluster *string `locationName:"cluster" type:"string"`
18968
18969	// A list of container instance IDs or full ARN entries.
18970	//
18971	// ContainerInstances is a required field
18972	ContainerInstances []*string `locationName:"containerInstances" type:"list" required:"true"`
18973
18974	// The container instance state with which to update the container instance.
18975	// The only valid values for this action are ACTIVE and DRAINING. A container
18976	// instance can only be updated to DRAINING status once it has reached an ACTIVE
18977	// state. If a container instance is in REGISTERING, DEREGISTERING, or REGISTRATION_FAILED
18978	// state you can describe the container instance but will be unable to update
18979	// the container instance state.
18980	//
18981	// Status is a required field
18982	Status *string `locationName:"status" type:"string" required:"true" enum:"ContainerInstanceStatus"`
18983}
18984
18985// String returns the string representation
18986func (s UpdateContainerInstancesStateInput) String() string {
18987	return awsutil.Prettify(s)
18988}
18989
18990// GoString returns the string representation
18991func (s UpdateContainerInstancesStateInput) GoString() string {
18992	return s.String()
18993}
18994
18995// Validate inspects the fields of the type to determine if they are valid.
18996func (s *UpdateContainerInstancesStateInput) Validate() error {
18997	invalidParams := request.ErrInvalidParams{Context: "UpdateContainerInstancesStateInput"}
18998	if s.ContainerInstances == nil {
18999		invalidParams.Add(request.NewErrParamRequired("ContainerInstances"))
19000	}
19001	if s.Status == nil {
19002		invalidParams.Add(request.NewErrParamRequired("Status"))
19003	}
19004
19005	if invalidParams.Len() > 0 {
19006		return invalidParams
19007	}
19008	return nil
19009}
19010
19011// SetCluster sets the Cluster field's value.
19012func (s *UpdateContainerInstancesStateInput) SetCluster(v string) *UpdateContainerInstancesStateInput {
19013	s.Cluster = &v
19014	return s
19015}
19016
19017// SetContainerInstances sets the ContainerInstances field's value.
19018func (s *UpdateContainerInstancesStateInput) SetContainerInstances(v []*string) *UpdateContainerInstancesStateInput {
19019	s.ContainerInstances = v
19020	return s
19021}
19022
19023// SetStatus sets the Status field's value.
19024func (s *UpdateContainerInstancesStateInput) SetStatus(v string) *UpdateContainerInstancesStateInput {
19025	s.Status = &v
19026	return s
19027}
19028
19029type UpdateContainerInstancesStateOutput struct {
19030	_ struct{} `type:"structure"`
19031
19032	// The list of container instances.
19033	ContainerInstances []*ContainerInstance `locationName:"containerInstances" type:"list"`
19034
19035	// Any failures associated with the call.
19036	Failures []*Failure `locationName:"failures" type:"list"`
19037}
19038
19039// String returns the string representation
19040func (s UpdateContainerInstancesStateOutput) String() string {
19041	return awsutil.Prettify(s)
19042}
19043
19044// GoString returns the string representation
19045func (s UpdateContainerInstancesStateOutput) GoString() string {
19046	return s.String()
19047}
19048
19049// SetContainerInstances sets the ContainerInstances field's value.
19050func (s *UpdateContainerInstancesStateOutput) SetContainerInstances(v []*ContainerInstance) *UpdateContainerInstancesStateOutput {
19051	s.ContainerInstances = v
19052	return s
19053}
19054
19055// SetFailures sets the Failures field's value.
19056func (s *UpdateContainerInstancesStateOutput) SetFailures(v []*Failure) *UpdateContainerInstancesStateOutput {
19057	s.Failures = v
19058	return s
19059}
19060
19061// There is already a current Amazon ECS container agent update in progress
19062// on the specified container instance. If the container agent becomes disconnected
19063// while it is in a transitional stage, such as PENDING or STAGING, the update
19064// process can get stuck in that state. However, when the agent reconnects,
19065// it resumes where it stopped previously.
19066type UpdateInProgressException struct {
19067	_            struct{} `type:"structure"`
19068	respMetadata protocol.ResponseMetadata
19069
19070	Message_ *string `locationName:"message" type:"string"`
19071}
19072
19073// String returns the string representation
19074func (s UpdateInProgressException) String() string {
19075	return awsutil.Prettify(s)
19076}
19077
19078// GoString returns the string representation
19079func (s UpdateInProgressException) GoString() string {
19080	return s.String()
19081}
19082
19083func newErrorUpdateInProgressException(v protocol.ResponseMetadata) error {
19084	return &UpdateInProgressException{
19085		respMetadata: v,
19086	}
19087}
19088
19089// Code returns the exception type name.
19090func (s UpdateInProgressException) Code() string {
19091	return "UpdateInProgressException"
19092}
19093
19094// Message returns the exception's message.
19095func (s UpdateInProgressException) Message() string {
19096	if s.Message_ != nil {
19097		return *s.Message_
19098	}
19099	return ""
19100}
19101
19102// OrigErr always returns nil, satisfies awserr.Error interface.
19103func (s UpdateInProgressException) OrigErr() error {
19104	return nil
19105}
19106
19107func (s UpdateInProgressException) Error() string {
19108	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
19109}
19110
19111// Status code returns the HTTP status code for the request's response error.
19112func (s UpdateInProgressException) StatusCode() int {
19113	return s.respMetadata.StatusCode
19114}
19115
19116// RequestID returns the service's response RequestID for request.
19117func (s UpdateInProgressException) RequestID() string {
19118	return s.respMetadata.RequestID
19119}
19120
19121type UpdateServiceInput struct {
19122	_ struct{} `type:"structure"`
19123
19124	// The capacity provider strategy to update the service to use.
19125	//
19126	// If the service is using the default capacity provider strategy for the cluster,
19127	// the service can be updated to use one or more capacity providers. However,
19128	// when a service is using a non-default capacity provider strategy, the service
19129	// cannot be updated to use the cluster's default capacity provider strategy.
19130	CapacityProviderStrategy []*CapacityProviderStrategyItem `locationName:"capacityProviderStrategy" type:"list"`
19131
19132	// The short name or full Amazon Resource Name (ARN) of the cluster that your
19133	// service is running on. If you do not specify a cluster, the default cluster
19134	// is assumed.
19135	Cluster *string `locationName:"cluster" type:"string"`
19136
19137	// Optional deployment parameters that control how many tasks run during the
19138	// deployment and the ordering of stopping and starting tasks.
19139	DeploymentConfiguration *DeploymentConfiguration `locationName:"deploymentConfiguration" type:"structure"`
19140
19141	// The number of instantiations of the task to place and keep running in your
19142	// service.
19143	DesiredCount *int64 `locationName:"desiredCount" type:"integer"`
19144
19145	// Whether to force a new deployment of the service. Deployments are not forced
19146	// by default. You can use this option to trigger a new deployment with no service
19147	// definition changes. For example, you can update a service's tasks to use
19148	// a newer Docker image with the same image/tag combination (my_image:latest)
19149	// or to roll Fargate tasks onto a newer platform version.
19150	ForceNewDeployment *bool `locationName:"forceNewDeployment" type:"boolean"`
19151
19152	// The period of time, in seconds, that the Amazon ECS service scheduler should
19153	// ignore unhealthy Elastic Load Balancing target health checks after a task
19154	// has first started. This is only valid if your service is configured to use
19155	// a load balancer. If your service's tasks take a while to start and respond
19156	// to Elastic Load Balancing health checks, you can specify a health check grace
19157	// period of up to 2,147,483,647 seconds. During that time, the Amazon ECS service
19158	// scheduler ignores the Elastic Load Balancing health check status. This grace
19159	// period can prevent the ECS service scheduler from marking tasks as unhealthy
19160	// and stopping them before they have time to come up.
19161	HealthCheckGracePeriodSeconds *int64 `locationName:"healthCheckGracePeriodSeconds" type:"integer"`
19162
19163	// An object representing the network configuration for a task or service.
19164	NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`
19165
19166	// The platform version on which your tasks in the service are running. A platform
19167	// version is only specified for tasks using the Fargate launch type. If a platform
19168	// version is not specified, the LATEST platform version is used by default.
19169	// For more information, see AWS Fargate Platform Versions (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html)
19170	// in the Amazon Elastic Container Service Developer Guide.
19171	PlatformVersion *string `locationName:"platformVersion" type:"string"`
19172
19173	// The name of the service to update.
19174	//
19175	// Service is a required field
19176	Service *string `locationName:"service" type:"string" required:"true"`
19177
19178	// The family and revision (family:revision) or full ARN of the task definition
19179	// to run in your service. If a revision is not specified, the latest ACTIVE
19180	// revision is used. If you modify the task definition with UpdateService, Amazon
19181	// ECS spawns a task with the new version of the task definition and then stops
19182	// an old task after the new version is running.
19183	TaskDefinition *string `locationName:"taskDefinition" type:"string"`
19184}
19185
19186// String returns the string representation
19187func (s UpdateServiceInput) String() string {
19188	return awsutil.Prettify(s)
19189}
19190
19191// GoString returns the string representation
19192func (s UpdateServiceInput) GoString() string {
19193	return s.String()
19194}
19195
19196// Validate inspects the fields of the type to determine if they are valid.
19197func (s *UpdateServiceInput) Validate() error {
19198	invalidParams := request.ErrInvalidParams{Context: "UpdateServiceInput"}
19199	if s.Service == nil {
19200		invalidParams.Add(request.NewErrParamRequired("Service"))
19201	}
19202	if s.CapacityProviderStrategy != nil {
19203		for i, v := range s.CapacityProviderStrategy {
19204			if v == nil {
19205				continue
19206			}
19207			if err := v.Validate(); err != nil {
19208				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CapacityProviderStrategy", i), err.(request.ErrInvalidParams))
19209			}
19210		}
19211	}
19212	if s.NetworkConfiguration != nil {
19213		if err := s.NetworkConfiguration.Validate(); err != nil {
19214			invalidParams.AddNested("NetworkConfiguration", err.(request.ErrInvalidParams))
19215		}
19216	}
19217
19218	if invalidParams.Len() > 0 {
19219		return invalidParams
19220	}
19221	return nil
19222}
19223
19224// SetCapacityProviderStrategy sets the CapacityProviderStrategy field's value.
19225func (s *UpdateServiceInput) SetCapacityProviderStrategy(v []*CapacityProviderStrategyItem) *UpdateServiceInput {
19226	s.CapacityProviderStrategy = v
19227	return s
19228}
19229
19230// SetCluster sets the Cluster field's value.
19231func (s *UpdateServiceInput) SetCluster(v string) *UpdateServiceInput {
19232	s.Cluster = &v
19233	return s
19234}
19235
19236// SetDeploymentConfiguration sets the DeploymentConfiguration field's value.
19237func (s *UpdateServiceInput) SetDeploymentConfiguration(v *DeploymentConfiguration) *UpdateServiceInput {
19238	s.DeploymentConfiguration = v
19239	return s
19240}
19241
19242// SetDesiredCount sets the DesiredCount field's value.
19243func (s *UpdateServiceInput) SetDesiredCount(v int64) *UpdateServiceInput {
19244	s.DesiredCount = &v
19245	return s
19246}
19247
19248// SetForceNewDeployment sets the ForceNewDeployment field's value.
19249func (s *UpdateServiceInput) SetForceNewDeployment(v bool) *UpdateServiceInput {
19250	s.ForceNewDeployment = &v
19251	return s
19252}
19253
19254// SetHealthCheckGracePeriodSeconds sets the HealthCheckGracePeriodSeconds field's value.
19255func (s *UpdateServiceInput) SetHealthCheckGracePeriodSeconds(v int64) *UpdateServiceInput {
19256	s.HealthCheckGracePeriodSeconds = &v
19257	return s
19258}
19259
19260// SetNetworkConfiguration sets the NetworkConfiguration field's value.
19261func (s *UpdateServiceInput) SetNetworkConfiguration(v *NetworkConfiguration) *UpdateServiceInput {
19262	s.NetworkConfiguration = v
19263	return s
19264}
19265
19266// SetPlatformVersion sets the PlatformVersion field's value.
19267func (s *UpdateServiceInput) SetPlatformVersion(v string) *UpdateServiceInput {
19268	s.PlatformVersion = &v
19269	return s
19270}
19271
19272// SetService sets the Service field's value.
19273func (s *UpdateServiceInput) SetService(v string) *UpdateServiceInput {
19274	s.Service = &v
19275	return s
19276}
19277
19278// SetTaskDefinition sets the TaskDefinition field's value.
19279func (s *UpdateServiceInput) SetTaskDefinition(v string) *UpdateServiceInput {
19280	s.TaskDefinition = &v
19281	return s
19282}
19283
19284type UpdateServiceOutput struct {
19285	_ struct{} `type:"structure"`
19286
19287	// The full description of your service following the update call.
19288	Service *Service `locationName:"service" type:"structure"`
19289}
19290
19291// String returns the string representation
19292func (s UpdateServiceOutput) String() string {
19293	return awsutil.Prettify(s)
19294}
19295
19296// GoString returns the string representation
19297func (s UpdateServiceOutput) GoString() string {
19298	return s.String()
19299}
19300
19301// SetService sets the Service field's value.
19302func (s *UpdateServiceOutput) SetService(v *Service) *UpdateServiceOutput {
19303	s.Service = v
19304	return s
19305}
19306
19307type UpdateServicePrimaryTaskSetInput struct {
19308	_ struct{} `type:"structure"`
19309
19310	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
19311	// the service that the task set exists in.
19312	//
19313	// Cluster is a required field
19314	Cluster *string `locationName:"cluster" type:"string" required:"true"`
19315
19316	// The short name or full Amazon Resource Name (ARN) of the task set to set
19317	// as the primary task set in the deployment.
19318	//
19319	// PrimaryTaskSet is a required field
19320	PrimaryTaskSet *string `locationName:"primaryTaskSet" type:"string" required:"true"`
19321
19322	// The short name or full Amazon Resource Name (ARN) of the service that the
19323	// task set exists in.
19324	//
19325	// Service is a required field
19326	Service *string `locationName:"service" type:"string" required:"true"`
19327}
19328
19329// String returns the string representation
19330func (s UpdateServicePrimaryTaskSetInput) String() string {
19331	return awsutil.Prettify(s)
19332}
19333
19334// GoString returns the string representation
19335func (s UpdateServicePrimaryTaskSetInput) GoString() string {
19336	return s.String()
19337}
19338
19339// Validate inspects the fields of the type to determine if they are valid.
19340func (s *UpdateServicePrimaryTaskSetInput) Validate() error {
19341	invalidParams := request.ErrInvalidParams{Context: "UpdateServicePrimaryTaskSetInput"}
19342	if s.Cluster == nil {
19343		invalidParams.Add(request.NewErrParamRequired("Cluster"))
19344	}
19345	if s.PrimaryTaskSet == nil {
19346		invalidParams.Add(request.NewErrParamRequired("PrimaryTaskSet"))
19347	}
19348	if s.Service == nil {
19349		invalidParams.Add(request.NewErrParamRequired("Service"))
19350	}
19351
19352	if invalidParams.Len() > 0 {
19353		return invalidParams
19354	}
19355	return nil
19356}
19357
19358// SetCluster sets the Cluster field's value.
19359func (s *UpdateServicePrimaryTaskSetInput) SetCluster(v string) *UpdateServicePrimaryTaskSetInput {
19360	s.Cluster = &v
19361	return s
19362}
19363
19364// SetPrimaryTaskSet sets the PrimaryTaskSet field's value.
19365func (s *UpdateServicePrimaryTaskSetInput) SetPrimaryTaskSet(v string) *UpdateServicePrimaryTaskSetInput {
19366	s.PrimaryTaskSet = &v
19367	return s
19368}
19369
19370// SetService sets the Service field's value.
19371func (s *UpdateServicePrimaryTaskSetInput) SetService(v string) *UpdateServicePrimaryTaskSetInput {
19372	s.Service = &v
19373	return s
19374}
19375
19376type UpdateServicePrimaryTaskSetOutput struct {
19377	_ struct{} `type:"structure"`
19378
19379	// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
19380	// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
19381	// desired number of tasks, how many tasks are running, and whether the task
19382	// set serves production traffic.
19383	TaskSet *TaskSet `locationName:"taskSet" type:"structure"`
19384}
19385
19386// String returns the string representation
19387func (s UpdateServicePrimaryTaskSetOutput) String() string {
19388	return awsutil.Prettify(s)
19389}
19390
19391// GoString returns the string representation
19392func (s UpdateServicePrimaryTaskSetOutput) GoString() string {
19393	return s.String()
19394}
19395
19396// SetTaskSet sets the TaskSet field's value.
19397func (s *UpdateServicePrimaryTaskSetOutput) SetTaskSet(v *TaskSet) *UpdateServicePrimaryTaskSetOutput {
19398	s.TaskSet = v
19399	return s
19400}
19401
19402type UpdateTaskSetInput struct {
19403	_ struct{} `type:"structure"`
19404
19405	// The short name or full Amazon Resource Name (ARN) of the cluster that hosts
19406	// the service that the task set exists in.
19407	//
19408	// Cluster is a required field
19409	Cluster *string `locationName:"cluster" type:"string" required:"true"`
19410
19411	// A floating-point percentage of the desired number of tasks to place and keep
19412	// running in the task set.
19413	//
19414	// Scale is a required field
19415	Scale *Scale `locationName:"scale" type:"structure" required:"true"`
19416
19417	// The short name or full Amazon Resource Name (ARN) of the service that the
19418	// task set exists in.
19419	//
19420	// Service is a required field
19421	Service *string `locationName:"service" type:"string" required:"true"`
19422
19423	// The short name or full Amazon Resource Name (ARN) of the task set to update.
19424	//
19425	// TaskSet is a required field
19426	TaskSet *string `locationName:"taskSet" type:"string" required:"true"`
19427}
19428
19429// String returns the string representation
19430func (s UpdateTaskSetInput) String() string {
19431	return awsutil.Prettify(s)
19432}
19433
19434// GoString returns the string representation
19435func (s UpdateTaskSetInput) GoString() string {
19436	return s.String()
19437}
19438
19439// Validate inspects the fields of the type to determine if they are valid.
19440func (s *UpdateTaskSetInput) Validate() error {
19441	invalidParams := request.ErrInvalidParams{Context: "UpdateTaskSetInput"}
19442	if s.Cluster == nil {
19443		invalidParams.Add(request.NewErrParamRequired("Cluster"))
19444	}
19445	if s.Scale == nil {
19446		invalidParams.Add(request.NewErrParamRequired("Scale"))
19447	}
19448	if s.Service == nil {
19449		invalidParams.Add(request.NewErrParamRequired("Service"))
19450	}
19451	if s.TaskSet == nil {
19452		invalidParams.Add(request.NewErrParamRequired("TaskSet"))
19453	}
19454
19455	if invalidParams.Len() > 0 {
19456		return invalidParams
19457	}
19458	return nil
19459}
19460
19461// SetCluster sets the Cluster field's value.
19462func (s *UpdateTaskSetInput) SetCluster(v string) *UpdateTaskSetInput {
19463	s.Cluster = &v
19464	return s
19465}
19466
19467// SetScale sets the Scale field's value.
19468func (s *UpdateTaskSetInput) SetScale(v *Scale) *UpdateTaskSetInput {
19469	s.Scale = v
19470	return s
19471}
19472
19473// SetService sets the Service field's value.
19474func (s *UpdateTaskSetInput) SetService(v string) *UpdateTaskSetInput {
19475	s.Service = &v
19476	return s
19477}
19478
19479// SetTaskSet sets the TaskSet field's value.
19480func (s *UpdateTaskSetInput) SetTaskSet(v string) *UpdateTaskSetInput {
19481	s.TaskSet = &v
19482	return s
19483}
19484
19485type UpdateTaskSetOutput struct {
19486	_ struct{} `type:"structure"`
19487
19488	// Information about a set of Amazon ECS tasks in either an AWS CodeDeploy or
19489	// an EXTERNAL deployment. An Amazon ECS task set includes details such as the
19490	// desired number of tasks, how many tasks are running, and whether the task
19491	// set serves production traffic.
19492	TaskSet *TaskSet `locationName:"taskSet" type:"structure"`
19493}
19494
19495// String returns the string representation
19496func (s UpdateTaskSetOutput) String() string {
19497	return awsutil.Prettify(s)
19498}
19499
19500// GoString returns the string representation
19501func (s UpdateTaskSetOutput) GoString() string {
19502	return s.String()
19503}
19504
19505// SetTaskSet sets the TaskSet field's value.
19506func (s *UpdateTaskSetOutput) SetTaskSet(v *TaskSet) *UpdateTaskSetOutput {
19507	s.TaskSet = v
19508	return s
19509}
19510
19511// The Docker and Amazon ECS container agent version information about a container
19512// instance.
19513type VersionInfo struct {
19514	_ struct{} `type:"structure"`
19515
19516	// The Git commit hash for the Amazon ECS container agent build on the amazon-ecs-agent
19517	// (https://github.com/aws/amazon-ecs-agent/commits/master) GitHub repository.
19518	AgentHash *string `locationName:"agentHash" type:"string"`
19519
19520	// The version number of the Amazon ECS container agent.
19521	AgentVersion *string `locationName:"agentVersion" type:"string"`
19522
19523	// The Docker version running on the container instance.
19524	DockerVersion *string `locationName:"dockerVersion" type:"string"`
19525}
19526
19527// String returns the string representation
19528func (s VersionInfo) String() string {
19529	return awsutil.Prettify(s)
19530}
19531
19532// GoString returns the string representation
19533func (s VersionInfo) GoString() string {
19534	return s.String()
19535}
19536
19537// SetAgentHash sets the AgentHash field's value.
19538func (s *VersionInfo) SetAgentHash(v string) *VersionInfo {
19539	s.AgentHash = &v
19540	return s
19541}
19542
19543// SetAgentVersion sets the AgentVersion field's value.
19544func (s *VersionInfo) SetAgentVersion(v string) *VersionInfo {
19545	s.AgentVersion = &v
19546	return s
19547}
19548
19549// SetDockerVersion sets the DockerVersion field's value.
19550func (s *VersionInfo) SetDockerVersion(v string) *VersionInfo {
19551	s.DockerVersion = &v
19552	return s
19553}
19554
19555// A data volume used in a task definition. For tasks that use a Docker volume,
19556// specify a DockerVolumeConfiguration. For tasks that use a bind mount host
19557// volume, specify a host and optional sourcePath. For more information, see
19558// Using Data Volumes in Tasks (https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html).
19559type Volume struct {
19560	_ struct{} `type:"structure"`
19561
19562	// This parameter is specified when you are using Docker volumes. Docker volumes
19563	// are only supported when you are using the EC2 launch type. Windows containers
19564	// only support the use of the local driver. To use bind mounts, specify the
19565	// host parameter instead.
19566	DockerVolumeConfiguration *DockerVolumeConfiguration `locationName:"dockerVolumeConfiguration" type:"structure"`
19567
19568	// This parameter is specified when you are using an Amazon Elastic File System
19569	// (Amazon EFS) file storage. Amazon EFS file systems are only supported when
19570	// you are using the EC2 launch type.
19571	//
19572	// EFSVolumeConfiguration remains in preview and is a Beta Service as defined
19573	// by and subject to the Beta Service Participation Service Terms located at
19574	// https://aws.amazon.com/service-terms (https://aws.amazon.com/service-terms)
19575	// ("Beta Terms"). These Beta Terms apply to your participation in this preview
19576	// of EFSVolumeConfiguration.
19577	EfsVolumeConfiguration *EFSVolumeConfiguration `locationName:"efsVolumeConfiguration" type:"structure"`
19578
19579	// This parameter is specified when you are using bind mount host volumes. Bind
19580	// mount host volumes are supported when you are using either the EC2 or Fargate
19581	// launch types. The contents of the host parameter determine whether your bind
19582	// mount host volume persists on the host container instance and where it is
19583	// stored. If the host parameter is empty, then the Docker daemon assigns a
19584	// host path for your data volume. However, the data is not guaranteed to persist
19585	// after the containers associated with it stop running.
19586	//
19587	// Windows containers can mount whole directories on the same drive as $env:ProgramData.
19588	// Windows containers cannot mount directories on a different drive, and mount
19589	// point cannot be across drives. For example, you can mount C:\my\path:C:\my\path
19590	// and D:\:D:\, but not D:\my\path:C:\my\path or D:\:C:\my\path.
19591	Host *HostVolumeProperties `locationName:"host" type:"structure"`
19592
19593	// The name of the volume. Up to 255 letters (uppercase and lowercase), numbers,
19594	// and hyphens are allowed. This name is referenced in the sourceVolume parameter
19595	// of container definition mountPoints.
19596	Name *string `locationName:"name" type:"string"`
19597}
19598
19599// String returns the string representation
19600func (s Volume) String() string {
19601	return awsutil.Prettify(s)
19602}
19603
19604// GoString returns the string representation
19605func (s Volume) GoString() string {
19606	return s.String()
19607}
19608
19609// Validate inspects the fields of the type to determine if they are valid.
19610func (s *Volume) Validate() error {
19611	invalidParams := request.ErrInvalidParams{Context: "Volume"}
19612	if s.EfsVolumeConfiguration != nil {
19613		if err := s.EfsVolumeConfiguration.Validate(); err != nil {
19614			invalidParams.AddNested("EfsVolumeConfiguration", err.(request.ErrInvalidParams))
19615		}
19616	}
19617
19618	if invalidParams.Len() > 0 {
19619		return invalidParams
19620	}
19621	return nil
19622}
19623
19624// SetDockerVolumeConfiguration sets the DockerVolumeConfiguration field's value.
19625func (s *Volume) SetDockerVolumeConfiguration(v *DockerVolumeConfiguration) *Volume {
19626	s.DockerVolumeConfiguration = v
19627	return s
19628}
19629
19630// SetEfsVolumeConfiguration sets the EfsVolumeConfiguration field's value.
19631func (s *Volume) SetEfsVolumeConfiguration(v *EFSVolumeConfiguration) *Volume {
19632	s.EfsVolumeConfiguration = v
19633	return s
19634}
19635
19636// SetHost sets the Host field's value.
19637func (s *Volume) SetHost(v *HostVolumeProperties) *Volume {
19638	s.Host = v
19639	return s
19640}
19641
19642// SetName sets the Name field's value.
19643func (s *Volume) SetName(v string) *Volume {
19644	s.Name = &v
19645	return s
19646}
19647
19648// Details on a data volume from another container in the same task definition.
19649type VolumeFrom struct {
19650	_ struct{} `type:"structure"`
19651
19652	// If this value is true, the container has read-only access to the volume.
19653	// If this value is false, then the container can write to the volume. The default
19654	// value is false.
19655	ReadOnly *bool `locationName:"readOnly" type:"boolean"`
19656
19657	// The name of another container within the same task definition from which
19658	// to mount volumes.
19659	SourceContainer *string `locationName:"sourceContainer" type:"string"`
19660}
19661
19662// String returns the string representation
19663func (s VolumeFrom) String() string {
19664	return awsutil.Prettify(s)
19665}
19666
19667// GoString returns the string representation
19668func (s VolumeFrom) GoString() string {
19669	return s.String()
19670}
19671
19672// SetReadOnly sets the ReadOnly field's value.
19673func (s *VolumeFrom) SetReadOnly(v bool) *VolumeFrom {
19674	s.ReadOnly = &v
19675	return s
19676}
19677
19678// SetSourceContainer sets the SourceContainer field's value.
19679func (s *VolumeFrom) SetSourceContainer(v string) *VolumeFrom {
19680	s.SourceContainer = &v
19681	return s
19682}
19683
19684const (
19685	// AgentUpdateStatusPending is a AgentUpdateStatus enum value
19686	AgentUpdateStatusPending = "PENDING"
19687
19688	// AgentUpdateStatusStaging is a AgentUpdateStatus enum value
19689	AgentUpdateStatusStaging = "STAGING"
19690
19691	// AgentUpdateStatusStaged is a AgentUpdateStatus enum value
19692	AgentUpdateStatusStaged = "STAGED"
19693
19694	// AgentUpdateStatusUpdating is a AgentUpdateStatus enum value
19695	AgentUpdateStatusUpdating = "UPDATING"
19696
19697	// AgentUpdateStatusUpdated is a AgentUpdateStatus enum value
19698	AgentUpdateStatusUpdated = "UPDATED"
19699
19700	// AgentUpdateStatusFailed is a AgentUpdateStatus enum value
19701	AgentUpdateStatusFailed = "FAILED"
19702)
19703
19704const (
19705	// AssignPublicIpEnabled is a AssignPublicIp enum value
19706	AssignPublicIpEnabled = "ENABLED"
19707
19708	// AssignPublicIpDisabled is a AssignPublicIp enum value
19709	AssignPublicIpDisabled = "DISABLED"
19710)
19711
19712const (
19713	// CapacityProviderFieldTags is a CapacityProviderField enum value
19714	CapacityProviderFieldTags = "TAGS"
19715)
19716
19717const (
19718	// CapacityProviderStatusActive is a CapacityProviderStatus enum value
19719	CapacityProviderStatusActive = "ACTIVE"
19720)
19721
19722const (
19723	// ClusterFieldAttachments is a ClusterField enum value
19724	ClusterFieldAttachments = "ATTACHMENTS"
19725
19726	// ClusterFieldSettings is a ClusterField enum value
19727	ClusterFieldSettings = "SETTINGS"
19728
19729	// ClusterFieldStatistics is a ClusterField enum value
19730	ClusterFieldStatistics = "STATISTICS"
19731
19732	// ClusterFieldTags is a ClusterField enum value
19733	ClusterFieldTags = "TAGS"
19734)
19735
19736const (
19737	// ClusterSettingNameContainerInsights is a ClusterSettingName enum value
19738	ClusterSettingNameContainerInsights = "containerInsights"
19739)
19740
19741const (
19742	// CompatibilityEc2 is a Compatibility enum value
19743	CompatibilityEc2 = "EC2"
19744
19745	// CompatibilityFargate is a Compatibility enum value
19746	CompatibilityFargate = "FARGATE"
19747)
19748
19749const (
19750	// ConnectivityConnected is a Connectivity enum value
19751	ConnectivityConnected = "CONNECTED"
19752
19753	// ConnectivityDisconnected is a Connectivity enum value
19754	ConnectivityDisconnected = "DISCONNECTED"
19755)
19756
19757const (
19758	// ContainerConditionStart is a ContainerCondition enum value
19759	ContainerConditionStart = "START"
19760
19761	// ContainerConditionComplete is a ContainerCondition enum value
19762	ContainerConditionComplete = "COMPLETE"
19763
19764	// ContainerConditionSuccess is a ContainerCondition enum value
19765	ContainerConditionSuccess = "SUCCESS"
19766
19767	// ContainerConditionHealthy is a ContainerCondition enum value
19768	ContainerConditionHealthy = "HEALTHY"
19769)
19770
19771const (
19772	// ContainerInstanceFieldTags is a ContainerInstanceField enum value
19773	ContainerInstanceFieldTags = "TAGS"
19774)
19775
19776const (
19777	// ContainerInstanceStatusActive is a ContainerInstanceStatus enum value
19778	ContainerInstanceStatusActive = "ACTIVE"
19779
19780	// ContainerInstanceStatusDraining is a ContainerInstanceStatus enum value
19781	ContainerInstanceStatusDraining = "DRAINING"
19782
19783	// ContainerInstanceStatusRegistering is a ContainerInstanceStatus enum value
19784	ContainerInstanceStatusRegistering = "REGISTERING"
19785
19786	// ContainerInstanceStatusDeregistering is a ContainerInstanceStatus enum value
19787	ContainerInstanceStatusDeregistering = "DEREGISTERING"
19788
19789	// ContainerInstanceStatusRegistrationFailed is a ContainerInstanceStatus enum value
19790	ContainerInstanceStatusRegistrationFailed = "REGISTRATION_FAILED"
19791)
19792
19793const (
19794	// DeploymentControllerTypeEcs is a DeploymentControllerType enum value
19795	DeploymentControllerTypeEcs = "ECS"
19796
19797	// DeploymentControllerTypeCodeDeploy is a DeploymentControllerType enum value
19798	DeploymentControllerTypeCodeDeploy = "CODE_DEPLOY"
19799
19800	// DeploymentControllerTypeExternal is a DeploymentControllerType enum value
19801	DeploymentControllerTypeExternal = "EXTERNAL"
19802)
19803
19804const (
19805	// DesiredStatusRunning is a DesiredStatus enum value
19806	DesiredStatusRunning = "RUNNING"
19807
19808	// DesiredStatusPending is a DesiredStatus enum value
19809	DesiredStatusPending = "PENDING"
19810
19811	// DesiredStatusStopped is a DesiredStatus enum value
19812	DesiredStatusStopped = "STOPPED"
19813)
19814
19815const (
19816	// DeviceCgroupPermissionRead is a DeviceCgroupPermission enum value
19817	DeviceCgroupPermissionRead = "read"
19818
19819	// DeviceCgroupPermissionWrite is a DeviceCgroupPermission enum value
19820	DeviceCgroupPermissionWrite = "write"
19821
19822	// DeviceCgroupPermissionMknod is a DeviceCgroupPermission enum value
19823	DeviceCgroupPermissionMknod = "mknod"
19824)
19825
19826const (
19827	// FirelensConfigurationTypeFluentd is a FirelensConfigurationType enum value
19828	FirelensConfigurationTypeFluentd = "fluentd"
19829
19830	// FirelensConfigurationTypeFluentbit is a FirelensConfigurationType enum value
19831	FirelensConfigurationTypeFluentbit = "fluentbit"
19832)
19833
19834const (
19835	// HealthStatusHealthy is a HealthStatus enum value
19836	HealthStatusHealthy = "HEALTHY"
19837
19838	// HealthStatusUnhealthy is a HealthStatus enum value
19839	HealthStatusUnhealthy = "UNHEALTHY"
19840
19841	// HealthStatusUnknown is a HealthStatus enum value
19842	HealthStatusUnknown = "UNKNOWN"
19843)
19844
19845const (
19846	// IpcModeHost is a IpcMode enum value
19847	IpcModeHost = "host"
19848
19849	// IpcModeTask is a IpcMode enum value
19850	IpcModeTask = "task"
19851
19852	// IpcModeNone is a IpcMode enum value
19853	IpcModeNone = "none"
19854)
19855
19856const (
19857	// LaunchTypeEc2 is a LaunchType enum value
19858	LaunchTypeEc2 = "EC2"
19859
19860	// LaunchTypeFargate is a LaunchType enum value
19861	LaunchTypeFargate = "FARGATE"
19862)
19863
19864const (
19865	// LogDriverJsonFile is a LogDriver enum value
19866	LogDriverJsonFile = "json-file"
19867
19868	// LogDriverSyslog is a LogDriver enum value
19869	LogDriverSyslog = "syslog"
19870
19871	// LogDriverJournald is a LogDriver enum value
19872	LogDriverJournald = "journald"
19873
19874	// LogDriverGelf is a LogDriver enum value
19875	LogDriverGelf = "gelf"
19876
19877	// LogDriverFluentd is a LogDriver enum value
19878	LogDriverFluentd = "fluentd"
19879
19880	// LogDriverAwslogs is a LogDriver enum value
19881	LogDriverAwslogs = "awslogs"
19882
19883	// LogDriverSplunk is a LogDriver enum value
19884	LogDriverSplunk = "splunk"
19885
19886	// LogDriverAwsfirelens is a LogDriver enum value
19887	LogDriverAwsfirelens = "awsfirelens"
19888)
19889
19890const (
19891	// ManagedScalingStatusEnabled is a ManagedScalingStatus enum value
19892	ManagedScalingStatusEnabled = "ENABLED"
19893
19894	// ManagedScalingStatusDisabled is a ManagedScalingStatus enum value
19895	ManagedScalingStatusDisabled = "DISABLED"
19896)
19897
19898const (
19899	// ManagedTerminationProtectionEnabled is a ManagedTerminationProtection enum value
19900	ManagedTerminationProtectionEnabled = "ENABLED"
19901
19902	// ManagedTerminationProtectionDisabled is a ManagedTerminationProtection enum value
19903	ManagedTerminationProtectionDisabled = "DISABLED"
19904)
19905
19906const (
19907	// NetworkModeBridge is a NetworkMode enum value
19908	NetworkModeBridge = "bridge"
19909
19910	// NetworkModeHost is a NetworkMode enum value
19911	NetworkModeHost = "host"
19912
19913	// NetworkModeAwsvpc is a NetworkMode enum value
19914	NetworkModeAwsvpc = "awsvpc"
19915
19916	// NetworkModeNone is a NetworkMode enum value
19917	NetworkModeNone = "none"
19918)
19919
19920const (
19921	// PidModeHost is a PidMode enum value
19922	PidModeHost = "host"
19923
19924	// PidModeTask is a PidMode enum value
19925	PidModeTask = "task"
19926)
19927
19928const (
19929	// PlacementConstraintTypeDistinctInstance is a PlacementConstraintType enum value
19930	PlacementConstraintTypeDistinctInstance = "distinctInstance"
19931
19932	// PlacementConstraintTypeMemberOf is a PlacementConstraintType enum value
19933	PlacementConstraintTypeMemberOf = "memberOf"
19934)
19935
19936const (
19937	// PlacementStrategyTypeRandom is a PlacementStrategyType enum value
19938	PlacementStrategyTypeRandom = "random"
19939
19940	// PlacementStrategyTypeSpread is a PlacementStrategyType enum value
19941	PlacementStrategyTypeSpread = "spread"
19942
19943	// PlacementStrategyTypeBinpack is a PlacementStrategyType enum value
19944	PlacementStrategyTypeBinpack = "binpack"
19945)
19946
19947const (
19948	// PlatformDeviceTypeGpu is a PlatformDeviceType enum value
19949	PlatformDeviceTypeGpu = "GPU"
19950)
19951
19952const (
19953	// PropagateTagsTaskDefinition is a PropagateTags enum value
19954	PropagateTagsTaskDefinition = "TASK_DEFINITION"
19955
19956	// PropagateTagsService is a PropagateTags enum value
19957	PropagateTagsService = "SERVICE"
19958)
19959
19960const (
19961	// ProxyConfigurationTypeAppmesh is a ProxyConfigurationType enum value
19962	ProxyConfigurationTypeAppmesh = "APPMESH"
19963)
19964
19965const (
19966	// ResourceTypeGpu is a ResourceType enum value
19967	ResourceTypeGpu = "GPU"
19968
19969	// ResourceTypeInferenceAccelerator is a ResourceType enum value
19970	ResourceTypeInferenceAccelerator = "InferenceAccelerator"
19971)
19972
19973const (
19974	// ScaleUnitPercent is a ScaleUnit enum value
19975	ScaleUnitPercent = "PERCENT"
19976)
19977
19978const (
19979	// SchedulingStrategyReplica is a SchedulingStrategy enum value
19980	SchedulingStrategyReplica = "REPLICA"
19981
19982	// SchedulingStrategyDaemon is a SchedulingStrategy enum value
19983	SchedulingStrategyDaemon = "DAEMON"
19984)
19985
19986const (
19987	// ScopeTask is a Scope enum value
19988	ScopeTask = "task"
19989
19990	// ScopeShared is a Scope enum value
19991	ScopeShared = "shared"
19992)
19993
19994const (
19995	// ServiceFieldTags is a ServiceField enum value
19996	ServiceFieldTags = "TAGS"
19997)
19998
19999const (
20000	// SettingNameServiceLongArnFormat is a SettingName enum value
20001	SettingNameServiceLongArnFormat = "serviceLongArnFormat"
20002
20003	// SettingNameTaskLongArnFormat is a SettingName enum value
20004	SettingNameTaskLongArnFormat = "taskLongArnFormat"
20005
20006	// SettingNameContainerInstanceLongArnFormat is a SettingName enum value
20007	SettingNameContainerInstanceLongArnFormat = "containerInstanceLongArnFormat"
20008
20009	// SettingNameAwsvpcTrunking is a SettingName enum value
20010	SettingNameAwsvpcTrunking = "awsvpcTrunking"
20011
20012	// SettingNameContainerInsights is a SettingName enum value
20013	SettingNameContainerInsights = "containerInsights"
20014)
20015
20016const (
20017	// SortOrderAsc is a SortOrder enum value
20018	SortOrderAsc = "ASC"
20019
20020	// SortOrderDesc is a SortOrder enum value
20021	SortOrderDesc = "DESC"
20022)
20023
20024const (
20025	// StabilityStatusSteadyState is a StabilityStatus enum value
20026	StabilityStatusSteadyState = "STEADY_STATE"
20027
20028	// StabilityStatusStabilizing is a StabilityStatus enum value
20029	StabilityStatusStabilizing = "STABILIZING"
20030)
20031
20032const (
20033	// TargetTypeContainerInstance is a TargetType enum value
20034	TargetTypeContainerInstance = "container-instance"
20035)
20036
20037const (
20038	// TaskDefinitionFamilyStatusActive is a TaskDefinitionFamilyStatus enum value
20039	TaskDefinitionFamilyStatusActive = "ACTIVE"
20040
20041	// TaskDefinitionFamilyStatusInactive is a TaskDefinitionFamilyStatus enum value
20042	TaskDefinitionFamilyStatusInactive = "INACTIVE"
20043
20044	// TaskDefinitionFamilyStatusAll is a TaskDefinitionFamilyStatus enum value
20045	TaskDefinitionFamilyStatusAll = "ALL"
20046)
20047
20048const (
20049	// TaskDefinitionFieldTags is a TaskDefinitionField enum value
20050	TaskDefinitionFieldTags = "TAGS"
20051)
20052
20053const (
20054	// TaskDefinitionPlacementConstraintTypeMemberOf is a TaskDefinitionPlacementConstraintType enum value
20055	TaskDefinitionPlacementConstraintTypeMemberOf = "memberOf"
20056)
20057
20058const (
20059	// TaskDefinitionStatusActive is a TaskDefinitionStatus enum value
20060	TaskDefinitionStatusActive = "ACTIVE"
20061
20062	// TaskDefinitionStatusInactive is a TaskDefinitionStatus enum value
20063	TaskDefinitionStatusInactive = "INACTIVE"
20064)
20065
20066const (
20067	// TaskFieldTags is a TaskField enum value
20068	TaskFieldTags = "TAGS"
20069)
20070
20071const (
20072	// TaskSetFieldTags is a TaskSetField enum value
20073	TaskSetFieldTags = "TAGS"
20074)
20075
20076const (
20077	// TaskStopCodeTaskFailedToStart is a TaskStopCode enum value
20078	TaskStopCodeTaskFailedToStart = "TaskFailedToStart"
20079
20080	// TaskStopCodeEssentialContainerExited is a TaskStopCode enum value
20081	TaskStopCodeEssentialContainerExited = "EssentialContainerExited"
20082
20083	// TaskStopCodeUserInitiated is a TaskStopCode enum value
20084	TaskStopCodeUserInitiated = "UserInitiated"
20085)
20086
20087const (
20088	// TransportProtocolTcp is a TransportProtocol enum value
20089	TransportProtocolTcp = "tcp"
20090
20091	// TransportProtocolUdp is a TransportProtocol enum value
20092	TransportProtocolUdp = "udp"
20093)
20094
20095const (
20096	// UlimitNameCore is a UlimitName enum value
20097	UlimitNameCore = "core"
20098
20099	// UlimitNameCpu is a UlimitName enum value
20100	UlimitNameCpu = "cpu"
20101
20102	// UlimitNameData is a UlimitName enum value
20103	UlimitNameData = "data"
20104
20105	// UlimitNameFsize is a UlimitName enum value
20106	UlimitNameFsize = "fsize"
20107
20108	// UlimitNameLocks is a UlimitName enum value
20109	UlimitNameLocks = "locks"
20110
20111	// UlimitNameMemlock is a UlimitName enum value
20112	UlimitNameMemlock = "memlock"
20113
20114	// UlimitNameMsgqueue is a UlimitName enum value
20115	UlimitNameMsgqueue = "msgqueue"
20116
20117	// UlimitNameNice is a UlimitName enum value
20118	UlimitNameNice = "nice"
20119
20120	// UlimitNameNofile is a UlimitName enum value
20121	UlimitNameNofile = "nofile"
20122
20123	// UlimitNameNproc is a UlimitName enum value
20124	UlimitNameNproc = "nproc"
20125
20126	// UlimitNameRss is a UlimitName enum value
20127	UlimitNameRss = "rss"
20128
20129	// UlimitNameRtprio is a UlimitName enum value
20130	UlimitNameRtprio = "rtprio"
20131
20132	// UlimitNameRttime is a UlimitName enum value
20133	UlimitNameRttime = "rttime"
20134
20135	// UlimitNameSigpending is a UlimitName enum value
20136	UlimitNameSigpending = "sigpending"
20137
20138	// UlimitNameStack is a UlimitName enum value
20139	UlimitNameStack = "stack"
20140)
20141