1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package elbv2
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)
13
14const opAddTags = "AddTags"
15
16// AddTagsRequest generates a "aws/request.Request" representing the
17// client's request for the AddTags operation. The "output" return
18// value will be populated with the request's response once the request complets
19// successfuly.
20//
21// Use "Send" method on the returned Request to send the API call to the service.
22// the "output" return value is not valid until after Send returns without error.
23//
24// See AddTags for more information on using the AddTags
25// API call, and error handling.
26//
27// This method is useful when you want to inject custom logic or configuration
28// into the SDK's request lifecycle. Such as custom headers, or retry logic.
29//
30//
31//    // Example sending a request using the AddTagsRequest method.
32//    req, resp := client.AddTagsRequest(params)
33//
34//    err := req.Send()
35//    if err == nil { // resp is now filled
36//        fmt.Println(resp)
37//    }
38//
39// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags
40func (c *ELBV2) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) {
41	op := &request.Operation{
42		Name:       opAddTags,
43		HTTPMethod: "POST",
44		HTTPPath:   "/",
45	}
46
47	if input == nil {
48		input = &AddTagsInput{}
49	}
50
51	output = &AddTagsOutput{}
52	req = c.newRequest(op, input, output)
53	return
54}
55
56// AddTags API operation for Elastic Load Balancing.
57//
58// Adds the specified tags to the specified Elastic Load Balancing resource.
59// You can tag your Application Load Balancers, Network Load Balancers, and
60// your target groups.
61//
62// Each tag consists of a key and an optional value. If a resource already has
63// a tag with the same key, AddTags updates its value.
64//
65// To list the current tags for your resources, use DescribeTags. To remove
66// tags from your resources, use RemoveTags.
67//
68// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
69// with awserr.Error's Code and Message methods to get detailed information about
70// the error.
71//
72// See the AWS API reference guide for Elastic Load Balancing's
73// API operation AddTags for usage and error information.
74//
75// Returned Error Codes:
76//   * ErrCodeDuplicateTagKeysException "DuplicateTagKeys"
77//   A tag key was specified more than once.
78//
79//   * ErrCodeTooManyTagsException "TooManyTags"
80//   You've reached the limit on the number of tags per load balancer.
81//
82//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
83//   The specified load balancer does not exist.
84//
85//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
86//   The specified target group does not exist.
87//
88// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags
89func (c *ELBV2) AddTags(input *AddTagsInput) (*AddTagsOutput, error) {
90	req, out := c.AddTagsRequest(input)
91	return out, req.Send()
92}
93
94// AddTagsWithContext is the same as AddTags with the addition of
95// the ability to pass a context and additional request options.
96//
97// See AddTags for details on how to use this API operation.
98//
99// The context must be non-nil and will be used for request cancellation. If
100// the context is nil a panic will occur. In the future the SDK may create
101// sub-contexts for http.Requests. See https://golang.org/pkg/context/
102// for more information on using Contexts.
103func (c *ELBV2) AddTagsWithContext(ctx aws.Context, input *AddTagsInput, opts ...request.Option) (*AddTagsOutput, error) {
104	req, out := c.AddTagsRequest(input)
105	req.SetContext(ctx)
106	req.ApplyOptions(opts...)
107	return out, req.Send()
108}
109
110const opCreateListener = "CreateListener"
111
112// CreateListenerRequest generates a "aws/request.Request" representing the
113// client's request for the CreateListener operation. The "output" return
114// value will be populated with the request's response once the request complets
115// successfuly.
116//
117// Use "Send" method on the returned Request to send the API call to the service.
118// the "output" return value is not valid until after Send returns without error.
119//
120// See CreateListener for more information on using the CreateListener
121// API call, and error handling.
122//
123// This method is useful when you want to inject custom logic or configuration
124// into the SDK's request lifecycle. Such as custom headers, or retry logic.
125//
126//
127//    // Example sending a request using the CreateListenerRequest method.
128//    req, resp := client.CreateListenerRequest(params)
129//
130//    err := req.Send()
131//    if err == nil { // resp is now filled
132//        fmt.Println(resp)
133//    }
134//
135// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener
136func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request.Request, output *CreateListenerOutput) {
137	op := &request.Operation{
138		Name:       opCreateListener,
139		HTTPMethod: "POST",
140		HTTPPath:   "/",
141	}
142
143	if input == nil {
144		input = &CreateListenerInput{}
145	}
146
147	output = &CreateListenerOutput{}
148	req = c.newRequest(op, input, output)
149	return
150}
151
152// CreateListener API operation for Elastic Load Balancing.
153//
154// Creates a listener for the specified Application Load Balancer or Network
155// Load Balancer.
156//
157// You can create up to 10 listeners per load balancer.
158//
159// To update a listener, use ModifyListener. When you are finished with a listener,
160// you can delete it using DeleteListener. If you are finished with both the
161// listener and the load balancer, you can delete them both using DeleteLoadBalancer.
162//
163// For more information, see Listeners for Your Application Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html)
164// in the Application Load Balancers Guide and Listeners for Your Network Load
165// Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html)
166// in the Network Load Balancers Guide.
167//
168// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
169// with awserr.Error's Code and Message methods to get detailed information about
170// the error.
171//
172// See the AWS API reference guide for Elastic Load Balancing's
173// API operation CreateListener for usage and error information.
174//
175// Returned Error Codes:
176//   * ErrCodeDuplicateListenerException "DuplicateListener"
177//   A listener with the specified port already exists.
178//
179//   * ErrCodeTooManyListenersException "TooManyListeners"
180//   You've reached the limit on the number of listeners per load balancer.
181//
182//   * ErrCodeTooManyCertificatesException "TooManyCertificates"
183//   You've reached the limit on the number of certificates per listener.
184//
185//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
186//   The specified load balancer does not exist.
187//
188//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
189//   The specified target group does not exist.
190//
191//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
192//   You've reached the limit on the number of load balancers per target group.
193//
194//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
195//   The requested configuration is not valid.
196//
197//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
198//   The specified configuration is not valid with this protocol.
199//
200//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
201//   The specified SSL policy does not exist.
202//
203//   * ErrCodeCertificateNotFoundException "CertificateNotFound"
204//   The specified certificate does not exist.
205//
206//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
207//   The specified protocol is not supported.
208//
209//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
210//   You've reached the limit on the number of times a target can be registered
211//   with a load balancer.
212//
213//   * ErrCodeTooManyTargetsException "TooManyTargets"
214//   You've reached the limit on the number of targets.
215//
216// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener
217func (c *ELBV2) CreateListener(input *CreateListenerInput) (*CreateListenerOutput, error) {
218	req, out := c.CreateListenerRequest(input)
219	return out, req.Send()
220}
221
222// CreateListenerWithContext is the same as CreateListener with the addition of
223// the ability to pass a context and additional request options.
224//
225// See CreateListener for details on how to use this API operation.
226//
227// The context must be non-nil and will be used for request cancellation. If
228// the context is nil a panic will occur. In the future the SDK may create
229// sub-contexts for http.Requests. See https://golang.org/pkg/context/
230// for more information on using Contexts.
231func (c *ELBV2) CreateListenerWithContext(ctx aws.Context, input *CreateListenerInput, opts ...request.Option) (*CreateListenerOutput, error) {
232	req, out := c.CreateListenerRequest(input)
233	req.SetContext(ctx)
234	req.ApplyOptions(opts...)
235	return out, req.Send()
236}
237
238const opCreateLoadBalancer = "CreateLoadBalancer"
239
240// CreateLoadBalancerRequest generates a "aws/request.Request" representing the
241// client's request for the CreateLoadBalancer operation. The "output" return
242// value will be populated with the request's response once the request complets
243// successfuly.
244//
245// Use "Send" method on the returned Request to send the API call to the service.
246// the "output" return value is not valid until after Send returns without error.
247//
248// See CreateLoadBalancer for more information on using the CreateLoadBalancer
249// API call, and error handling.
250//
251// This method is useful when you want to inject custom logic or configuration
252// into the SDK's request lifecycle. Such as custom headers, or retry logic.
253//
254//
255//    // Example sending a request using the CreateLoadBalancerRequest method.
256//    req, resp := client.CreateLoadBalancerRequest(params)
257//
258//    err := req.Send()
259//    if err == nil { // resp is now filled
260//        fmt.Println(resp)
261//    }
262//
263// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer
264func (c *ELBV2) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req *request.Request, output *CreateLoadBalancerOutput) {
265	op := &request.Operation{
266		Name:       opCreateLoadBalancer,
267		HTTPMethod: "POST",
268		HTTPPath:   "/",
269	}
270
271	if input == nil {
272		input = &CreateLoadBalancerInput{}
273	}
274
275	output = &CreateLoadBalancerOutput{}
276	req = c.newRequest(op, input, output)
277	return
278}
279
280// CreateLoadBalancer API operation for Elastic Load Balancing.
281//
282// Creates an Application Load Balancer or a Network Load Balancer.
283//
284// When you create a load balancer, you can specify security groups, subnets,
285// IP address type, and tags. Otherwise, you could do so later using SetSecurityGroups,
286// SetSubnets, SetIpAddressType, and AddTags.
287//
288// To create listeners for your load balancer, use CreateListener. To describe
289// your current load balancers, see DescribeLoadBalancers. When you are finished
290// with a load balancer, you can delete it using DeleteLoadBalancer.
291//
292// You can create up to 20 load balancers per region per account. You can request
293// an increase for the number of load balancers for your account. For more information,
294// see Limits for Your Application Load Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html)
295// in the Application Load Balancers Guide and Limits for Your Network Load
296// Balancer (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-limits.html)
297// in the Network Load Balancers Guide.
298//
299// For more information, see Application Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html)
300// in the Application Load Balancers Guide and Network Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html)
301// in the Network Load Balancers Guide.
302//
303// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
304// with awserr.Error's Code and Message methods to get detailed information about
305// the error.
306//
307// See the AWS API reference guide for Elastic Load Balancing's
308// API operation CreateLoadBalancer for usage and error information.
309//
310// Returned Error Codes:
311//   * ErrCodeDuplicateLoadBalancerNameException "DuplicateLoadBalancerName"
312//   A load balancer with the specified name already exists.
313//
314//   * ErrCodeTooManyLoadBalancersException "TooManyLoadBalancers"
315//   You've reached the limit on the number of load balancers for your AWS account.
316//
317//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
318//   The requested configuration is not valid.
319//
320//   * ErrCodeSubnetNotFoundException "SubnetNotFound"
321//   The specified subnet does not exist.
322//
323//   * ErrCodeInvalidSubnetException "InvalidSubnet"
324//   The specified subnet is out of available addresses.
325//
326//   * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup"
327//   The specified security group does not exist.
328//
329//   * ErrCodeInvalidSchemeException "InvalidScheme"
330//   The requested scheme is not valid.
331//
332//   * ErrCodeTooManyTagsException "TooManyTags"
333//   You've reached the limit on the number of tags per load balancer.
334//
335//   * ErrCodeDuplicateTagKeysException "DuplicateTagKeys"
336//   A tag key was specified more than once.
337//
338//   * ErrCodeResourceInUseException "ResourceInUse"
339//   A specified resource is in use.
340//
341//   * ErrCodeAllocationIdNotFoundException "AllocationIdNotFound"
342//   The specified allocation ID does not exist.
343//
344//   * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported"
345//   The specified Availability Zone is not supported.
346//
347// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer
348func (c *ELBV2) CreateLoadBalancer(input *CreateLoadBalancerInput) (*CreateLoadBalancerOutput, error) {
349	req, out := c.CreateLoadBalancerRequest(input)
350	return out, req.Send()
351}
352
353// CreateLoadBalancerWithContext is the same as CreateLoadBalancer with the addition of
354// the ability to pass a context and additional request options.
355//
356// See CreateLoadBalancer for details on how to use this API operation.
357//
358// The context must be non-nil and will be used for request cancellation. If
359// the context is nil a panic will occur. In the future the SDK may create
360// sub-contexts for http.Requests. See https://golang.org/pkg/context/
361// for more information on using Contexts.
362func (c *ELBV2) CreateLoadBalancerWithContext(ctx aws.Context, input *CreateLoadBalancerInput, opts ...request.Option) (*CreateLoadBalancerOutput, error) {
363	req, out := c.CreateLoadBalancerRequest(input)
364	req.SetContext(ctx)
365	req.ApplyOptions(opts...)
366	return out, req.Send()
367}
368
369const opCreateRule = "CreateRule"
370
371// CreateRuleRequest generates a "aws/request.Request" representing the
372// client's request for the CreateRule operation. The "output" return
373// value will be populated with the request's response once the request complets
374// successfuly.
375//
376// Use "Send" method on the returned Request to send the API call to the service.
377// the "output" return value is not valid until after Send returns without error.
378//
379// See CreateRule for more information on using the CreateRule
380// API call, and error handling.
381//
382// This method is useful when you want to inject custom logic or configuration
383// into the SDK's request lifecycle. Such as custom headers, or retry logic.
384//
385//
386//    // Example sending a request using the CreateRuleRequest method.
387//    req, resp := client.CreateRuleRequest(params)
388//
389//    err := req.Send()
390//    if err == nil { // resp is now filled
391//        fmt.Println(resp)
392//    }
393//
394// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule
395func (c *ELBV2) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, output *CreateRuleOutput) {
396	op := &request.Operation{
397		Name:       opCreateRule,
398		HTTPMethod: "POST",
399		HTTPPath:   "/",
400	}
401
402	if input == nil {
403		input = &CreateRuleInput{}
404	}
405
406	output = &CreateRuleOutput{}
407	req = c.newRequest(op, input, output)
408	return
409}
410
411// CreateRule API operation for Elastic Load Balancing.
412//
413// Creates a rule for the specified listener. The listener must be associated
414// with an Application Load Balancer.
415//
416// Rules are evaluated in priority order, from the lowest value to the highest
417// value. When the condition for a rule is met, the specified action is taken.
418// If no conditions are met, the action for the default rule is taken. For more
419// information, see Listener Rules (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules)
420// in the Application Load Balancers Guide.
421//
422// To view your current rules, use DescribeRules. To update a rule, use ModifyRule.
423// To set the priorities of your rules, use SetRulePriorities. To delete a rule,
424// use DeleteRule.
425//
426// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
427// with awserr.Error's Code and Message methods to get detailed information about
428// the error.
429//
430// See the AWS API reference guide for Elastic Load Balancing's
431// API operation CreateRule for usage and error information.
432//
433// Returned Error Codes:
434//   * ErrCodePriorityInUseException "PriorityInUse"
435//   The specified priority is in use.
436//
437//   * ErrCodeTooManyTargetGroupsException "TooManyTargetGroups"
438//   You've reached the limit on the number of target groups for your AWS account.
439//
440//   * ErrCodeTooManyRulesException "TooManyRules"
441//   You've reached the limit on the number of rules per load balancer.
442//
443//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
444//   You've reached the limit on the number of load balancers per target group.
445//
446//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
447//   The specified configuration is not valid with this protocol.
448//
449//   * ErrCodeListenerNotFoundException "ListenerNotFound"
450//   The specified listener does not exist.
451//
452//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
453//   The specified target group does not exist.
454//
455//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
456//   The requested configuration is not valid.
457//
458//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
459//   You've reached the limit on the number of times a target can be registered
460//   with a load balancer.
461//
462//   * ErrCodeTooManyTargetsException "TooManyTargets"
463//   You've reached the limit on the number of targets.
464//
465// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule
466func (c *ELBV2) CreateRule(input *CreateRuleInput) (*CreateRuleOutput, error) {
467	req, out := c.CreateRuleRequest(input)
468	return out, req.Send()
469}
470
471// CreateRuleWithContext is the same as CreateRule with the addition of
472// the ability to pass a context and additional request options.
473//
474// See CreateRule for details on how to use this API operation.
475//
476// The context must be non-nil and will be used for request cancellation. If
477// the context is nil a panic will occur. In the future the SDK may create
478// sub-contexts for http.Requests. See https://golang.org/pkg/context/
479// for more information on using Contexts.
480func (c *ELBV2) CreateRuleWithContext(ctx aws.Context, input *CreateRuleInput, opts ...request.Option) (*CreateRuleOutput, error) {
481	req, out := c.CreateRuleRequest(input)
482	req.SetContext(ctx)
483	req.ApplyOptions(opts...)
484	return out, req.Send()
485}
486
487const opCreateTargetGroup = "CreateTargetGroup"
488
489// CreateTargetGroupRequest generates a "aws/request.Request" representing the
490// client's request for the CreateTargetGroup operation. The "output" return
491// value will be populated with the request's response once the request complets
492// successfuly.
493//
494// Use "Send" method on the returned Request to send the API call to the service.
495// the "output" return value is not valid until after Send returns without error.
496//
497// See CreateTargetGroup for more information on using the CreateTargetGroup
498// API call, and error handling.
499//
500// This method is useful when you want to inject custom logic or configuration
501// into the SDK's request lifecycle. Such as custom headers, or retry logic.
502//
503//
504//    // Example sending a request using the CreateTargetGroupRequest method.
505//    req, resp := client.CreateTargetGroupRequest(params)
506//
507//    err := req.Send()
508//    if err == nil { // resp is now filled
509//        fmt.Println(resp)
510//    }
511//
512// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup
513func (c *ELBV2) CreateTargetGroupRequest(input *CreateTargetGroupInput) (req *request.Request, output *CreateTargetGroupOutput) {
514	op := &request.Operation{
515		Name:       opCreateTargetGroup,
516		HTTPMethod: "POST",
517		HTTPPath:   "/",
518	}
519
520	if input == nil {
521		input = &CreateTargetGroupInput{}
522	}
523
524	output = &CreateTargetGroupOutput{}
525	req = c.newRequest(op, input, output)
526	return
527}
528
529// CreateTargetGroup API operation for Elastic Load Balancing.
530//
531// Creates a target group.
532//
533// To register targets with the target group, use RegisterTargets. To update
534// the health check settings for the target group, use ModifyTargetGroup. To
535// monitor the health of targets in the target group, use DescribeTargetHealth.
536//
537// To route traffic to the targets in a target group, specify the target group
538// in an action using CreateListener or CreateRule.
539//
540// To delete a target group, use DeleteTargetGroup.
541//
542// For more information, see Target Groups for Your Application Load Balancers
543// (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html)
544// in the Application Load Balancers Guide or Target Groups for Your Network
545// Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html)
546// in the Network Load Balancers Guide.
547//
548// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
549// with awserr.Error's Code and Message methods to get detailed information about
550// the error.
551//
552// See the AWS API reference guide for Elastic Load Balancing's
553// API operation CreateTargetGroup for usage and error information.
554//
555// Returned Error Codes:
556//   * ErrCodeDuplicateTargetGroupNameException "DuplicateTargetGroupName"
557//   A target group with the specified name already exists.
558//
559//   * ErrCodeTooManyTargetGroupsException "TooManyTargetGroups"
560//   You've reached the limit on the number of target groups for your AWS account.
561//
562//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
563//   The requested configuration is not valid.
564//
565// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup
566func (c *ELBV2) CreateTargetGroup(input *CreateTargetGroupInput) (*CreateTargetGroupOutput, error) {
567	req, out := c.CreateTargetGroupRequest(input)
568	return out, req.Send()
569}
570
571// CreateTargetGroupWithContext is the same as CreateTargetGroup with the addition of
572// the ability to pass a context and additional request options.
573//
574// See CreateTargetGroup for details on how to use this API operation.
575//
576// The context must be non-nil and will be used for request cancellation. If
577// the context is nil a panic will occur. In the future the SDK may create
578// sub-contexts for http.Requests. See https://golang.org/pkg/context/
579// for more information on using Contexts.
580func (c *ELBV2) CreateTargetGroupWithContext(ctx aws.Context, input *CreateTargetGroupInput, opts ...request.Option) (*CreateTargetGroupOutput, error) {
581	req, out := c.CreateTargetGroupRequest(input)
582	req.SetContext(ctx)
583	req.ApplyOptions(opts...)
584	return out, req.Send()
585}
586
587const opDeleteListener = "DeleteListener"
588
589// DeleteListenerRequest generates a "aws/request.Request" representing the
590// client's request for the DeleteListener operation. The "output" return
591// value will be populated with the request's response once the request complets
592// successfuly.
593//
594// Use "Send" method on the returned Request to send the API call to the service.
595// the "output" return value is not valid until after Send returns without error.
596//
597// See DeleteListener for more information on using the DeleteListener
598// API call, and error handling.
599//
600// This method is useful when you want to inject custom logic or configuration
601// into the SDK's request lifecycle. Such as custom headers, or retry logic.
602//
603//
604//    // Example sending a request using the DeleteListenerRequest method.
605//    req, resp := client.DeleteListenerRequest(params)
606//
607//    err := req.Send()
608//    if err == nil { // resp is now filled
609//        fmt.Println(resp)
610//    }
611//
612// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener
613func (c *ELBV2) DeleteListenerRequest(input *DeleteListenerInput) (req *request.Request, output *DeleteListenerOutput) {
614	op := &request.Operation{
615		Name:       opDeleteListener,
616		HTTPMethod: "POST",
617		HTTPPath:   "/",
618	}
619
620	if input == nil {
621		input = &DeleteListenerInput{}
622	}
623
624	output = &DeleteListenerOutput{}
625	req = c.newRequest(op, input, output)
626	return
627}
628
629// DeleteListener API operation for Elastic Load Balancing.
630//
631// Deletes the specified listener.
632//
633// Alternatively, your listener is deleted when you delete the load balancer
634// it is attached to using DeleteLoadBalancer.
635//
636// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
637// with awserr.Error's Code and Message methods to get detailed information about
638// the error.
639//
640// See the AWS API reference guide for Elastic Load Balancing's
641// API operation DeleteListener for usage and error information.
642//
643// Returned Error Codes:
644//   * ErrCodeListenerNotFoundException "ListenerNotFound"
645//   The specified listener does not exist.
646//
647// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener
648func (c *ELBV2) DeleteListener(input *DeleteListenerInput) (*DeleteListenerOutput, error) {
649	req, out := c.DeleteListenerRequest(input)
650	return out, req.Send()
651}
652
653// DeleteListenerWithContext is the same as DeleteListener with the addition of
654// the ability to pass a context and additional request options.
655//
656// See DeleteListener for details on how to use this API operation.
657//
658// The context must be non-nil and will be used for request cancellation. If
659// the context is nil a panic will occur. In the future the SDK may create
660// sub-contexts for http.Requests. See https://golang.org/pkg/context/
661// for more information on using Contexts.
662func (c *ELBV2) DeleteListenerWithContext(ctx aws.Context, input *DeleteListenerInput, opts ...request.Option) (*DeleteListenerOutput, error) {
663	req, out := c.DeleteListenerRequest(input)
664	req.SetContext(ctx)
665	req.ApplyOptions(opts...)
666	return out, req.Send()
667}
668
669const opDeleteLoadBalancer = "DeleteLoadBalancer"
670
671// DeleteLoadBalancerRequest generates a "aws/request.Request" representing the
672// client's request for the DeleteLoadBalancer operation. The "output" return
673// value will be populated with the request's response once the request complets
674// successfuly.
675//
676// Use "Send" method on the returned Request to send the API call to the service.
677// the "output" return value is not valid until after Send returns without error.
678//
679// See DeleteLoadBalancer for more information on using the DeleteLoadBalancer
680// API call, and error handling.
681//
682// This method is useful when you want to inject custom logic or configuration
683// into the SDK's request lifecycle. Such as custom headers, or retry logic.
684//
685//
686//    // Example sending a request using the DeleteLoadBalancerRequest method.
687//    req, resp := client.DeleteLoadBalancerRequest(params)
688//
689//    err := req.Send()
690//    if err == nil { // resp is now filled
691//        fmt.Println(resp)
692//    }
693//
694// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer
695func (c *ELBV2) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req *request.Request, output *DeleteLoadBalancerOutput) {
696	op := &request.Operation{
697		Name:       opDeleteLoadBalancer,
698		HTTPMethod: "POST",
699		HTTPPath:   "/",
700	}
701
702	if input == nil {
703		input = &DeleteLoadBalancerInput{}
704	}
705
706	output = &DeleteLoadBalancerOutput{}
707	req = c.newRequest(op, input, output)
708	return
709}
710
711// DeleteLoadBalancer API operation for Elastic Load Balancing.
712//
713// Deletes the specified Application Load Balancer or Network Load Balancer
714// and its attached listeners.
715//
716// You can't delete a load balancer if deletion protection is enabled. If the
717// load balancer does not exist or has already been deleted, the call succeeds.
718//
719// Deleting a load balancer does not affect its registered targets. For example,
720// your EC2 instances continue to run and are still registered to their target
721// groups. If you no longer need these EC2 instances, you can stop or terminate
722// them.
723//
724// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
725// with awserr.Error's Code and Message methods to get detailed information about
726// the error.
727//
728// See the AWS API reference guide for Elastic Load Balancing's
729// API operation DeleteLoadBalancer for usage and error information.
730//
731// Returned Error Codes:
732//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
733//   The specified load balancer does not exist.
734//
735//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
736//   This operation is not allowed.
737//
738// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer
739func (c *ELBV2) DeleteLoadBalancer(input *DeleteLoadBalancerInput) (*DeleteLoadBalancerOutput, error) {
740	req, out := c.DeleteLoadBalancerRequest(input)
741	return out, req.Send()
742}
743
744// DeleteLoadBalancerWithContext is the same as DeleteLoadBalancer with the addition of
745// the ability to pass a context and additional request options.
746//
747// See DeleteLoadBalancer for details on how to use this API operation.
748//
749// The context must be non-nil and will be used for request cancellation. If
750// the context is nil a panic will occur. In the future the SDK may create
751// sub-contexts for http.Requests. See https://golang.org/pkg/context/
752// for more information on using Contexts.
753func (c *ELBV2) DeleteLoadBalancerWithContext(ctx aws.Context, input *DeleteLoadBalancerInput, opts ...request.Option) (*DeleteLoadBalancerOutput, error) {
754	req, out := c.DeleteLoadBalancerRequest(input)
755	req.SetContext(ctx)
756	req.ApplyOptions(opts...)
757	return out, req.Send()
758}
759
760const opDeleteRule = "DeleteRule"
761
762// DeleteRuleRequest generates a "aws/request.Request" representing the
763// client's request for the DeleteRule operation. The "output" return
764// value will be populated with the request's response once the request complets
765// successfuly.
766//
767// Use "Send" method on the returned Request to send the API call to the service.
768// the "output" return value is not valid until after Send returns without error.
769//
770// See DeleteRule for more information on using the DeleteRule
771// API call, and error handling.
772//
773// This method is useful when you want to inject custom logic or configuration
774// into the SDK's request lifecycle. Such as custom headers, or retry logic.
775//
776//
777//    // Example sending a request using the DeleteRuleRequest method.
778//    req, resp := client.DeleteRuleRequest(params)
779//
780//    err := req.Send()
781//    if err == nil { // resp is now filled
782//        fmt.Println(resp)
783//    }
784//
785// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule
786func (c *ELBV2) DeleteRuleRequest(input *DeleteRuleInput) (req *request.Request, output *DeleteRuleOutput) {
787	op := &request.Operation{
788		Name:       opDeleteRule,
789		HTTPMethod: "POST",
790		HTTPPath:   "/",
791	}
792
793	if input == nil {
794		input = &DeleteRuleInput{}
795	}
796
797	output = &DeleteRuleOutput{}
798	req = c.newRequest(op, input, output)
799	return
800}
801
802// DeleteRule API operation for Elastic Load Balancing.
803//
804// Deletes the specified rule.
805//
806// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
807// with awserr.Error's Code and Message methods to get detailed information about
808// the error.
809//
810// See the AWS API reference guide for Elastic Load Balancing's
811// API operation DeleteRule for usage and error information.
812//
813// Returned Error Codes:
814//   * ErrCodeRuleNotFoundException "RuleNotFound"
815//   The specified rule does not exist.
816//
817//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
818//   This operation is not allowed.
819//
820// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule
821func (c *ELBV2) DeleteRule(input *DeleteRuleInput) (*DeleteRuleOutput, error) {
822	req, out := c.DeleteRuleRequest(input)
823	return out, req.Send()
824}
825
826// DeleteRuleWithContext is the same as DeleteRule with the addition of
827// the ability to pass a context and additional request options.
828//
829// See DeleteRule for details on how to use this API operation.
830//
831// The context must be non-nil and will be used for request cancellation. If
832// the context is nil a panic will occur. In the future the SDK may create
833// sub-contexts for http.Requests. See https://golang.org/pkg/context/
834// for more information on using Contexts.
835func (c *ELBV2) DeleteRuleWithContext(ctx aws.Context, input *DeleteRuleInput, opts ...request.Option) (*DeleteRuleOutput, error) {
836	req, out := c.DeleteRuleRequest(input)
837	req.SetContext(ctx)
838	req.ApplyOptions(opts...)
839	return out, req.Send()
840}
841
842const opDeleteTargetGroup = "DeleteTargetGroup"
843
844// DeleteTargetGroupRequest generates a "aws/request.Request" representing the
845// client's request for the DeleteTargetGroup operation. The "output" return
846// value will be populated with the request's response once the request complets
847// successfuly.
848//
849// Use "Send" method on the returned Request to send the API call to the service.
850// the "output" return value is not valid until after Send returns without error.
851//
852// See DeleteTargetGroup for more information on using the DeleteTargetGroup
853// API call, and error handling.
854//
855// This method is useful when you want to inject custom logic or configuration
856// into the SDK's request lifecycle. Such as custom headers, or retry logic.
857//
858//
859//    // Example sending a request using the DeleteTargetGroupRequest method.
860//    req, resp := client.DeleteTargetGroupRequest(params)
861//
862//    err := req.Send()
863//    if err == nil { // resp is now filled
864//        fmt.Println(resp)
865//    }
866//
867// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup
868func (c *ELBV2) DeleteTargetGroupRequest(input *DeleteTargetGroupInput) (req *request.Request, output *DeleteTargetGroupOutput) {
869	op := &request.Operation{
870		Name:       opDeleteTargetGroup,
871		HTTPMethod: "POST",
872		HTTPPath:   "/",
873	}
874
875	if input == nil {
876		input = &DeleteTargetGroupInput{}
877	}
878
879	output = &DeleteTargetGroupOutput{}
880	req = c.newRequest(op, input, output)
881	return
882}
883
884// DeleteTargetGroup API operation for Elastic Load Balancing.
885//
886// Deletes the specified target group.
887//
888// You can delete a target group if it is not referenced by any actions. Deleting
889// a target group also deletes any associated health checks.
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 Elastic Load Balancing's
896// API operation DeleteTargetGroup for usage and error information.
897//
898// Returned Error Codes:
899//   * ErrCodeResourceInUseException "ResourceInUse"
900//   A specified resource is in use.
901//
902// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup
903func (c *ELBV2) DeleteTargetGroup(input *DeleteTargetGroupInput) (*DeleteTargetGroupOutput, error) {
904	req, out := c.DeleteTargetGroupRequest(input)
905	return out, req.Send()
906}
907
908// DeleteTargetGroupWithContext is the same as DeleteTargetGroup with the addition of
909// the ability to pass a context and additional request options.
910//
911// See DeleteTargetGroup for details on how to use this API operation.
912//
913// The context must be non-nil and will be used for request cancellation. If
914// the context is nil a panic will occur. In the future the SDK may create
915// sub-contexts for http.Requests. See https://golang.org/pkg/context/
916// for more information on using Contexts.
917func (c *ELBV2) DeleteTargetGroupWithContext(ctx aws.Context, input *DeleteTargetGroupInput, opts ...request.Option) (*DeleteTargetGroupOutput, error) {
918	req, out := c.DeleteTargetGroupRequest(input)
919	req.SetContext(ctx)
920	req.ApplyOptions(opts...)
921	return out, req.Send()
922}
923
924const opDeregisterTargets = "DeregisterTargets"
925
926// DeregisterTargetsRequest generates a "aws/request.Request" representing the
927// client's request for the DeregisterTargets operation. The "output" return
928// value will be populated with the request's response once the request complets
929// successfuly.
930//
931// Use "Send" method on the returned Request to send the API call to the service.
932// the "output" return value is not valid until after Send returns without error.
933//
934// See DeregisterTargets for more information on using the DeregisterTargets
935// API call, and error handling.
936//
937// This method is useful when you want to inject custom logic or configuration
938// into the SDK's request lifecycle. Such as custom headers, or retry logic.
939//
940//
941//    // Example sending a request using the DeregisterTargetsRequest method.
942//    req, resp := client.DeregisterTargetsRequest(params)
943//
944//    err := req.Send()
945//    if err == nil { // resp is now filled
946//        fmt.Println(resp)
947//    }
948//
949// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets
950func (c *ELBV2) DeregisterTargetsRequest(input *DeregisterTargetsInput) (req *request.Request, output *DeregisterTargetsOutput) {
951	op := &request.Operation{
952		Name:       opDeregisterTargets,
953		HTTPMethod: "POST",
954		HTTPPath:   "/",
955	}
956
957	if input == nil {
958		input = &DeregisterTargetsInput{}
959	}
960
961	output = &DeregisterTargetsOutput{}
962	req = c.newRequest(op, input, output)
963	return
964}
965
966// DeregisterTargets API operation for Elastic Load Balancing.
967//
968// Deregisters the specified targets from the specified target group. After
969// the targets are deregistered, they no longer receive traffic from the load
970// balancer.
971//
972// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
973// with awserr.Error's Code and Message methods to get detailed information about
974// the error.
975//
976// See the AWS API reference guide for Elastic Load Balancing's
977// API operation DeregisterTargets for usage and error information.
978//
979// Returned Error Codes:
980//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
981//   The specified target group does not exist.
982//
983//   * ErrCodeInvalidTargetException "InvalidTarget"
984//   The specified target does not exist or is not in the same VPC as the target
985//   group.
986//
987// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets
988func (c *ELBV2) DeregisterTargets(input *DeregisterTargetsInput) (*DeregisterTargetsOutput, error) {
989	req, out := c.DeregisterTargetsRequest(input)
990	return out, req.Send()
991}
992
993// DeregisterTargetsWithContext is the same as DeregisterTargets with the addition of
994// the ability to pass a context and additional request options.
995//
996// See DeregisterTargets for details on how to use this API operation.
997//
998// The context must be non-nil and will be used for request cancellation. If
999// the context is nil a panic will occur. In the future the SDK may create
1000// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1001// for more information on using Contexts.
1002func (c *ELBV2) DeregisterTargetsWithContext(ctx aws.Context, input *DeregisterTargetsInput, opts ...request.Option) (*DeregisterTargetsOutput, error) {
1003	req, out := c.DeregisterTargetsRequest(input)
1004	req.SetContext(ctx)
1005	req.ApplyOptions(opts...)
1006	return out, req.Send()
1007}
1008
1009const opDescribeAccountLimits = "DescribeAccountLimits"
1010
1011// DescribeAccountLimitsRequest generates a "aws/request.Request" representing the
1012// client's request for the DescribeAccountLimits operation. The "output" return
1013// value will be populated with the request's response once the request complets
1014// successfuly.
1015//
1016// Use "Send" method on the returned Request to send the API call to the service.
1017// the "output" return value is not valid until after Send returns without error.
1018//
1019// See DescribeAccountLimits for more information on using the DescribeAccountLimits
1020// API call, and error handling.
1021//
1022// This method is useful when you want to inject custom logic or configuration
1023// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1024//
1025//
1026//    // Example sending a request using the DescribeAccountLimitsRequest method.
1027//    req, resp := client.DescribeAccountLimitsRequest(params)
1028//
1029//    err := req.Send()
1030//    if err == nil { // resp is now filled
1031//        fmt.Println(resp)
1032//    }
1033//
1034// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits
1035func (c *ELBV2) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (req *request.Request, output *DescribeAccountLimitsOutput) {
1036	op := &request.Operation{
1037		Name:       opDescribeAccountLimits,
1038		HTTPMethod: "POST",
1039		HTTPPath:   "/",
1040	}
1041
1042	if input == nil {
1043		input = &DescribeAccountLimitsInput{}
1044	}
1045
1046	output = &DescribeAccountLimitsOutput{}
1047	req = c.newRequest(op, input, output)
1048	return
1049}
1050
1051// DescribeAccountLimits API operation for Elastic Load Balancing.
1052//
1053// Describes the current Elastic Load Balancing resource limits for your AWS
1054// account.
1055//
1056// For more information, see Limits for Your Application Load Balancers (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html)
1057// in the Application Load Balancer Guide or Limits for Your Network Load Balancers
1058// (http://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-limits.html)
1059// in the Network Load Balancers Guide.
1060//
1061// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1062// with awserr.Error's Code and Message methods to get detailed information about
1063// the error.
1064//
1065// See the AWS API reference guide for Elastic Load Balancing's
1066// API operation DescribeAccountLimits for usage and error information.
1067// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits
1068func (c *ELBV2) DescribeAccountLimits(input *DescribeAccountLimitsInput) (*DescribeAccountLimitsOutput, error) {
1069	req, out := c.DescribeAccountLimitsRequest(input)
1070	return out, req.Send()
1071}
1072
1073// DescribeAccountLimitsWithContext is the same as DescribeAccountLimits with the addition of
1074// the ability to pass a context and additional request options.
1075//
1076// See DescribeAccountLimits for details on how to use this API operation.
1077//
1078// The context must be non-nil and will be used for request cancellation. If
1079// the context is nil a panic will occur. In the future the SDK may create
1080// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1081// for more information on using Contexts.
1082func (c *ELBV2) DescribeAccountLimitsWithContext(ctx aws.Context, input *DescribeAccountLimitsInput, opts ...request.Option) (*DescribeAccountLimitsOutput, error) {
1083	req, out := c.DescribeAccountLimitsRequest(input)
1084	req.SetContext(ctx)
1085	req.ApplyOptions(opts...)
1086	return out, req.Send()
1087}
1088
1089const opDescribeListeners = "DescribeListeners"
1090
1091// DescribeListenersRequest generates a "aws/request.Request" representing the
1092// client's request for the DescribeListeners operation. The "output" return
1093// value will be populated with the request's response once the request complets
1094// successfuly.
1095//
1096// Use "Send" method on the returned Request to send the API call to the service.
1097// the "output" return value is not valid until after Send returns without error.
1098//
1099// See DescribeListeners for more information on using the DescribeListeners
1100// API call, and error handling.
1101//
1102// This method is useful when you want to inject custom logic or configuration
1103// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1104//
1105//
1106//    // Example sending a request using the DescribeListenersRequest method.
1107//    req, resp := client.DescribeListenersRequest(params)
1108//
1109//    err := req.Send()
1110//    if err == nil { // resp is now filled
1111//        fmt.Println(resp)
1112//    }
1113//
1114// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners
1115func (c *ELBV2) DescribeListenersRequest(input *DescribeListenersInput) (req *request.Request, output *DescribeListenersOutput) {
1116	op := &request.Operation{
1117		Name:       opDescribeListeners,
1118		HTTPMethod: "POST",
1119		HTTPPath:   "/",
1120		Paginator: &request.Paginator{
1121			InputTokens:     []string{"Marker"},
1122			OutputTokens:    []string{"NextMarker"},
1123			LimitToken:      "",
1124			TruncationToken: "",
1125		},
1126	}
1127
1128	if input == nil {
1129		input = &DescribeListenersInput{}
1130	}
1131
1132	output = &DescribeListenersOutput{}
1133	req = c.newRequest(op, input, output)
1134	return
1135}
1136
1137// DescribeListeners API operation for Elastic Load Balancing.
1138//
1139// Describes the specified listeners or the listeners for the specified Application
1140// Load Balancer or Network Load Balancer. You must specify either a load balancer
1141// or one or more listeners.
1142//
1143// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1144// with awserr.Error's Code and Message methods to get detailed information about
1145// the error.
1146//
1147// See the AWS API reference guide for Elastic Load Balancing's
1148// API operation DescribeListeners for usage and error information.
1149//
1150// Returned Error Codes:
1151//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1152//   The specified listener does not exist.
1153//
1154//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1155//   The specified load balancer does not exist.
1156//
1157// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners
1158func (c *ELBV2) DescribeListeners(input *DescribeListenersInput) (*DescribeListenersOutput, error) {
1159	req, out := c.DescribeListenersRequest(input)
1160	return out, req.Send()
1161}
1162
1163// DescribeListenersWithContext is the same as DescribeListeners with the addition of
1164// the ability to pass a context and additional request options.
1165//
1166// See DescribeListeners for details on how to use this API operation.
1167//
1168// The context must be non-nil and will be used for request cancellation. If
1169// the context is nil a panic will occur. In the future the SDK may create
1170// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1171// for more information on using Contexts.
1172func (c *ELBV2) DescribeListenersWithContext(ctx aws.Context, input *DescribeListenersInput, opts ...request.Option) (*DescribeListenersOutput, error) {
1173	req, out := c.DescribeListenersRequest(input)
1174	req.SetContext(ctx)
1175	req.ApplyOptions(opts...)
1176	return out, req.Send()
1177}
1178
1179// DescribeListenersPages iterates over the pages of a DescribeListeners operation,
1180// calling the "fn" function with the response data for each page. To stop
1181// iterating, return false from the fn function.
1182//
1183// See DescribeListeners method for more information on how to use this operation.
1184//
1185// Note: This operation can generate multiple requests to a service.
1186//
1187//    // Example iterating over at most 3 pages of a DescribeListeners operation.
1188//    pageNum := 0
1189//    err := client.DescribeListenersPages(params,
1190//        func(page *DescribeListenersOutput, lastPage bool) bool {
1191//            pageNum++
1192//            fmt.Println(page)
1193//            return pageNum <= 3
1194//        })
1195//
1196func (c *ELBV2) DescribeListenersPages(input *DescribeListenersInput, fn func(*DescribeListenersOutput, bool) bool) error {
1197	return c.DescribeListenersPagesWithContext(aws.BackgroundContext(), input, fn)
1198}
1199
1200// DescribeListenersPagesWithContext same as DescribeListenersPages except
1201// it takes a Context and allows setting request options on the pages.
1202//
1203// The context must be non-nil and will be used for request cancellation. If
1204// the context is nil a panic will occur. In the future the SDK may create
1205// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1206// for more information on using Contexts.
1207func (c *ELBV2) DescribeListenersPagesWithContext(ctx aws.Context, input *DescribeListenersInput, fn func(*DescribeListenersOutput, bool) bool, opts ...request.Option) error {
1208	p := request.Pagination{
1209		NewRequest: func() (*request.Request, error) {
1210			var inCpy *DescribeListenersInput
1211			if input != nil {
1212				tmp := *input
1213				inCpy = &tmp
1214			}
1215			req, _ := c.DescribeListenersRequest(inCpy)
1216			req.SetContext(ctx)
1217			req.ApplyOptions(opts...)
1218			return req, nil
1219		},
1220	}
1221
1222	cont := true
1223	for p.Next() && cont {
1224		cont = fn(p.Page().(*DescribeListenersOutput), !p.HasNextPage())
1225	}
1226	return p.Err()
1227}
1228
1229const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes"
1230
1231// DescribeLoadBalancerAttributesRequest generates a "aws/request.Request" representing the
1232// client's request for the DescribeLoadBalancerAttributes operation. The "output" return
1233// value will be populated with the request's response once the request complets
1234// successfuly.
1235//
1236// Use "Send" method on the returned Request to send the API call to the service.
1237// the "output" return value is not valid until after Send returns without error.
1238//
1239// See DescribeLoadBalancerAttributes for more information on using the DescribeLoadBalancerAttributes
1240// API call, and error handling.
1241//
1242// This method is useful when you want to inject custom logic or configuration
1243// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1244//
1245//
1246//    // Example sending a request using the DescribeLoadBalancerAttributesRequest method.
1247//    req, resp := client.DescribeLoadBalancerAttributesRequest(params)
1248//
1249//    err := req.Send()
1250//    if err == nil { // resp is now filled
1251//        fmt.Println(resp)
1252//    }
1253//
1254// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes
1255func (c *ELBV2) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalancerAttributesInput) (req *request.Request, output *DescribeLoadBalancerAttributesOutput) {
1256	op := &request.Operation{
1257		Name:       opDescribeLoadBalancerAttributes,
1258		HTTPMethod: "POST",
1259		HTTPPath:   "/",
1260	}
1261
1262	if input == nil {
1263		input = &DescribeLoadBalancerAttributesInput{}
1264	}
1265
1266	output = &DescribeLoadBalancerAttributesOutput{}
1267	req = c.newRequest(op, input, output)
1268	return
1269}
1270
1271// DescribeLoadBalancerAttributes API operation for Elastic Load Balancing.
1272//
1273// Describes the attributes for the specified Application Load Balancer or Network
1274// Load Balancer.
1275//
1276// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1277// with awserr.Error's Code and Message methods to get detailed information about
1278// the error.
1279//
1280// See the AWS API reference guide for Elastic Load Balancing's
1281// API operation DescribeLoadBalancerAttributes for usage and error information.
1282//
1283// Returned Error Codes:
1284//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1285//   The specified load balancer does not exist.
1286//
1287// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes
1288func (c *ELBV2) DescribeLoadBalancerAttributes(input *DescribeLoadBalancerAttributesInput) (*DescribeLoadBalancerAttributesOutput, error) {
1289	req, out := c.DescribeLoadBalancerAttributesRequest(input)
1290	return out, req.Send()
1291}
1292
1293// DescribeLoadBalancerAttributesWithContext is the same as DescribeLoadBalancerAttributes with the addition of
1294// the ability to pass a context and additional request options.
1295//
1296// See DescribeLoadBalancerAttributes for details on how to use this API operation.
1297//
1298// The context must be non-nil and will be used for request cancellation. If
1299// the context is nil a panic will occur. In the future the SDK may create
1300// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1301// for more information on using Contexts.
1302func (c *ELBV2) DescribeLoadBalancerAttributesWithContext(ctx aws.Context, input *DescribeLoadBalancerAttributesInput, opts ...request.Option) (*DescribeLoadBalancerAttributesOutput, error) {
1303	req, out := c.DescribeLoadBalancerAttributesRequest(input)
1304	req.SetContext(ctx)
1305	req.ApplyOptions(opts...)
1306	return out, req.Send()
1307}
1308
1309const opDescribeLoadBalancers = "DescribeLoadBalancers"
1310
1311// DescribeLoadBalancersRequest generates a "aws/request.Request" representing the
1312// client's request for the DescribeLoadBalancers operation. The "output" return
1313// value will be populated with the request's response once the request complets
1314// successfuly.
1315//
1316// Use "Send" method on the returned Request to send the API call to the service.
1317// the "output" return value is not valid until after Send returns without error.
1318//
1319// See DescribeLoadBalancers for more information on using the DescribeLoadBalancers
1320// API call, and error handling.
1321//
1322// This method is useful when you want to inject custom logic or configuration
1323// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1324//
1325//
1326//    // Example sending a request using the DescribeLoadBalancersRequest method.
1327//    req, resp := client.DescribeLoadBalancersRequest(params)
1328//
1329//    err := req.Send()
1330//    if err == nil { // resp is now filled
1331//        fmt.Println(resp)
1332//    }
1333//
1334// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers
1335func (c *ELBV2) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (req *request.Request, output *DescribeLoadBalancersOutput) {
1336	op := &request.Operation{
1337		Name:       opDescribeLoadBalancers,
1338		HTTPMethod: "POST",
1339		HTTPPath:   "/",
1340		Paginator: &request.Paginator{
1341			InputTokens:     []string{"Marker"},
1342			OutputTokens:    []string{"NextMarker"},
1343			LimitToken:      "",
1344			TruncationToken: "",
1345		},
1346	}
1347
1348	if input == nil {
1349		input = &DescribeLoadBalancersInput{}
1350	}
1351
1352	output = &DescribeLoadBalancersOutput{}
1353	req = c.newRequest(op, input, output)
1354	return
1355}
1356
1357// DescribeLoadBalancers API operation for Elastic Load Balancing.
1358//
1359// Describes the specified load balancers or all of your load balancers.
1360//
1361// To describe the listeners for a load balancer, use DescribeListeners. To
1362// describe the attributes for a load balancer, use DescribeLoadBalancerAttributes.
1363//
1364// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1365// with awserr.Error's Code and Message methods to get detailed information about
1366// the error.
1367//
1368// See the AWS API reference guide for Elastic Load Balancing's
1369// API operation DescribeLoadBalancers for usage and error information.
1370//
1371// Returned Error Codes:
1372//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1373//   The specified load balancer does not exist.
1374//
1375// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers
1376func (c *ELBV2) DescribeLoadBalancers(input *DescribeLoadBalancersInput) (*DescribeLoadBalancersOutput, error) {
1377	req, out := c.DescribeLoadBalancersRequest(input)
1378	return out, req.Send()
1379}
1380
1381// DescribeLoadBalancersWithContext is the same as DescribeLoadBalancers with the addition of
1382// the ability to pass a context and additional request options.
1383//
1384// See DescribeLoadBalancers for details on how to use this API operation.
1385//
1386// The context must be non-nil and will be used for request cancellation. If
1387// the context is nil a panic will occur. In the future the SDK may create
1388// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1389// for more information on using Contexts.
1390func (c *ELBV2) DescribeLoadBalancersWithContext(ctx aws.Context, input *DescribeLoadBalancersInput, opts ...request.Option) (*DescribeLoadBalancersOutput, error) {
1391	req, out := c.DescribeLoadBalancersRequest(input)
1392	req.SetContext(ctx)
1393	req.ApplyOptions(opts...)
1394	return out, req.Send()
1395}
1396
1397// DescribeLoadBalancersPages iterates over the pages of a DescribeLoadBalancers operation,
1398// calling the "fn" function with the response data for each page. To stop
1399// iterating, return false from the fn function.
1400//
1401// See DescribeLoadBalancers method for more information on how to use this operation.
1402//
1403// Note: This operation can generate multiple requests to a service.
1404//
1405//    // Example iterating over at most 3 pages of a DescribeLoadBalancers operation.
1406//    pageNum := 0
1407//    err := client.DescribeLoadBalancersPages(params,
1408//        func(page *DescribeLoadBalancersOutput, lastPage bool) bool {
1409//            pageNum++
1410//            fmt.Println(page)
1411//            return pageNum <= 3
1412//        })
1413//
1414func (c *ELBV2) DescribeLoadBalancersPages(input *DescribeLoadBalancersInput, fn func(*DescribeLoadBalancersOutput, bool) bool) error {
1415	return c.DescribeLoadBalancersPagesWithContext(aws.BackgroundContext(), input, fn)
1416}
1417
1418// DescribeLoadBalancersPagesWithContext same as DescribeLoadBalancersPages except
1419// it takes a Context and allows setting request options on the pages.
1420//
1421// The context must be non-nil and will be used for request cancellation. If
1422// the context is nil a panic will occur. In the future the SDK may create
1423// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1424// for more information on using Contexts.
1425func (c *ELBV2) DescribeLoadBalancersPagesWithContext(ctx aws.Context, input *DescribeLoadBalancersInput, fn func(*DescribeLoadBalancersOutput, bool) bool, opts ...request.Option) error {
1426	p := request.Pagination{
1427		NewRequest: func() (*request.Request, error) {
1428			var inCpy *DescribeLoadBalancersInput
1429			if input != nil {
1430				tmp := *input
1431				inCpy = &tmp
1432			}
1433			req, _ := c.DescribeLoadBalancersRequest(inCpy)
1434			req.SetContext(ctx)
1435			req.ApplyOptions(opts...)
1436			return req, nil
1437		},
1438	}
1439
1440	cont := true
1441	for p.Next() && cont {
1442		cont = fn(p.Page().(*DescribeLoadBalancersOutput), !p.HasNextPage())
1443	}
1444	return p.Err()
1445}
1446
1447const opDescribeRules = "DescribeRules"
1448
1449// DescribeRulesRequest generates a "aws/request.Request" representing the
1450// client's request for the DescribeRules operation. The "output" return
1451// value will be populated with the request's response once the request complets
1452// successfuly.
1453//
1454// Use "Send" method on the returned Request to send the API call to the service.
1455// the "output" return value is not valid until after Send returns without error.
1456//
1457// See DescribeRules for more information on using the DescribeRules
1458// API call, and error handling.
1459//
1460// This method is useful when you want to inject custom logic or configuration
1461// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1462//
1463//
1464//    // Example sending a request using the DescribeRulesRequest method.
1465//    req, resp := client.DescribeRulesRequest(params)
1466//
1467//    err := req.Send()
1468//    if err == nil { // resp is now filled
1469//        fmt.Println(resp)
1470//    }
1471//
1472// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules
1473func (c *ELBV2) DescribeRulesRequest(input *DescribeRulesInput) (req *request.Request, output *DescribeRulesOutput) {
1474	op := &request.Operation{
1475		Name:       opDescribeRules,
1476		HTTPMethod: "POST",
1477		HTTPPath:   "/",
1478	}
1479
1480	if input == nil {
1481		input = &DescribeRulesInput{}
1482	}
1483
1484	output = &DescribeRulesOutput{}
1485	req = c.newRequest(op, input, output)
1486	return
1487}
1488
1489// DescribeRules API operation for Elastic Load Balancing.
1490//
1491// Describes the specified rules or the rules for the specified listener. You
1492// must specify either a listener or one or more rules.
1493//
1494// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1495// with awserr.Error's Code and Message methods to get detailed information about
1496// the error.
1497//
1498// See the AWS API reference guide for Elastic Load Balancing's
1499// API operation DescribeRules for usage and error information.
1500//
1501// Returned Error Codes:
1502//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1503//   The specified listener does not exist.
1504//
1505//   * ErrCodeRuleNotFoundException "RuleNotFound"
1506//   The specified rule does not exist.
1507//
1508// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules
1509func (c *ELBV2) DescribeRules(input *DescribeRulesInput) (*DescribeRulesOutput, error) {
1510	req, out := c.DescribeRulesRequest(input)
1511	return out, req.Send()
1512}
1513
1514// DescribeRulesWithContext is the same as DescribeRules with the addition of
1515// the ability to pass a context and additional request options.
1516//
1517// See DescribeRules for details on how to use this API operation.
1518//
1519// The context must be non-nil and will be used for request cancellation. If
1520// the context is nil a panic will occur. In the future the SDK may create
1521// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1522// for more information on using Contexts.
1523func (c *ELBV2) DescribeRulesWithContext(ctx aws.Context, input *DescribeRulesInput, opts ...request.Option) (*DescribeRulesOutput, error) {
1524	req, out := c.DescribeRulesRequest(input)
1525	req.SetContext(ctx)
1526	req.ApplyOptions(opts...)
1527	return out, req.Send()
1528}
1529
1530const opDescribeSSLPolicies = "DescribeSSLPolicies"
1531
1532// DescribeSSLPoliciesRequest generates a "aws/request.Request" representing the
1533// client's request for the DescribeSSLPolicies operation. The "output" return
1534// value will be populated with the request's response once the request complets
1535// successfuly.
1536//
1537// Use "Send" method on the returned Request to send the API call to the service.
1538// the "output" return value is not valid until after Send returns without error.
1539//
1540// See DescribeSSLPolicies for more information on using the DescribeSSLPolicies
1541// API call, and error handling.
1542//
1543// This method is useful when you want to inject custom logic or configuration
1544// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1545//
1546//
1547//    // Example sending a request using the DescribeSSLPoliciesRequest method.
1548//    req, resp := client.DescribeSSLPoliciesRequest(params)
1549//
1550//    err := req.Send()
1551//    if err == nil { // resp is now filled
1552//        fmt.Println(resp)
1553//    }
1554//
1555// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies
1556func (c *ELBV2) DescribeSSLPoliciesRequest(input *DescribeSSLPoliciesInput) (req *request.Request, output *DescribeSSLPoliciesOutput) {
1557	op := &request.Operation{
1558		Name:       opDescribeSSLPolicies,
1559		HTTPMethod: "POST",
1560		HTTPPath:   "/",
1561	}
1562
1563	if input == nil {
1564		input = &DescribeSSLPoliciesInput{}
1565	}
1566
1567	output = &DescribeSSLPoliciesOutput{}
1568	req = c.newRequest(op, input, output)
1569	return
1570}
1571
1572// DescribeSSLPolicies API operation for Elastic Load Balancing.
1573//
1574// Describes the specified policies or all policies used for SSL negotiation.
1575//
1576// For more information, see Security Policies (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)
1577// in the Application Load Balancers Guide.
1578//
1579// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1580// with awserr.Error's Code and Message methods to get detailed information about
1581// the error.
1582//
1583// See the AWS API reference guide for Elastic Load Balancing's
1584// API operation DescribeSSLPolicies for usage and error information.
1585//
1586// Returned Error Codes:
1587//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
1588//   The specified SSL policy does not exist.
1589//
1590// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies
1591func (c *ELBV2) DescribeSSLPolicies(input *DescribeSSLPoliciesInput) (*DescribeSSLPoliciesOutput, error) {
1592	req, out := c.DescribeSSLPoliciesRequest(input)
1593	return out, req.Send()
1594}
1595
1596// DescribeSSLPoliciesWithContext is the same as DescribeSSLPolicies with the addition of
1597// the ability to pass a context and additional request options.
1598//
1599// See DescribeSSLPolicies for details on how to use this API operation.
1600//
1601// The context must be non-nil and will be used for request cancellation. If
1602// the context is nil a panic will occur. In the future the SDK may create
1603// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1604// for more information on using Contexts.
1605func (c *ELBV2) DescribeSSLPoliciesWithContext(ctx aws.Context, input *DescribeSSLPoliciesInput, opts ...request.Option) (*DescribeSSLPoliciesOutput, error) {
1606	req, out := c.DescribeSSLPoliciesRequest(input)
1607	req.SetContext(ctx)
1608	req.ApplyOptions(opts...)
1609	return out, req.Send()
1610}
1611
1612const opDescribeTags = "DescribeTags"
1613
1614// DescribeTagsRequest generates a "aws/request.Request" representing the
1615// client's request for the DescribeTags operation. The "output" return
1616// value will be populated with the request's response once the request complets
1617// successfuly.
1618//
1619// Use "Send" method on the returned Request to send the API call to the service.
1620// the "output" return value is not valid until after Send returns without error.
1621//
1622// See DescribeTags for more information on using the DescribeTags
1623// API call, and error handling.
1624//
1625// This method is useful when you want to inject custom logic or configuration
1626// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1627//
1628//
1629//    // Example sending a request using the DescribeTagsRequest method.
1630//    req, resp := client.DescribeTagsRequest(params)
1631//
1632//    err := req.Send()
1633//    if err == nil { // resp is now filled
1634//        fmt.Println(resp)
1635//    }
1636//
1637// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags
1638func (c *ELBV2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) {
1639	op := &request.Operation{
1640		Name:       opDescribeTags,
1641		HTTPMethod: "POST",
1642		HTTPPath:   "/",
1643	}
1644
1645	if input == nil {
1646		input = &DescribeTagsInput{}
1647	}
1648
1649	output = &DescribeTagsOutput{}
1650	req = c.newRequest(op, input, output)
1651	return
1652}
1653
1654// DescribeTags API operation for Elastic Load Balancing.
1655//
1656// Describes the tags for the specified resources. You can describe the tags
1657// for one or more Application Load Balancers, Network Load Balancers, and target
1658// groups.
1659//
1660// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1661// with awserr.Error's Code and Message methods to get detailed information about
1662// the error.
1663//
1664// See the AWS API reference guide for Elastic Load Balancing's
1665// API operation DescribeTags for usage and error information.
1666//
1667// Returned Error Codes:
1668//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1669//   The specified load balancer does not exist.
1670//
1671//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1672//   The specified target group does not exist.
1673//
1674//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1675//   The specified listener does not exist.
1676//
1677//   * ErrCodeRuleNotFoundException "RuleNotFound"
1678//   The specified rule does not exist.
1679//
1680// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags
1681func (c *ELBV2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) {
1682	req, out := c.DescribeTagsRequest(input)
1683	return out, req.Send()
1684}
1685
1686// DescribeTagsWithContext is the same as DescribeTags with the addition of
1687// the ability to pass a context and additional request options.
1688//
1689// See DescribeTags for details on how to use this API operation.
1690//
1691// The context must be non-nil and will be used for request cancellation. If
1692// the context is nil a panic will occur. In the future the SDK may create
1693// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1694// for more information on using Contexts.
1695func (c *ELBV2) DescribeTagsWithContext(ctx aws.Context, input *DescribeTagsInput, opts ...request.Option) (*DescribeTagsOutput, error) {
1696	req, out := c.DescribeTagsRequest(input)
1697	req.SetContext(ctx)
1698	req.ApplyOptions(opts...)
1699	return out, req.Send()
1700}
1701
1702const opDescribeTargetGroupAttributes = "DescribeTargetGroupAttributes"
1703
1704// DescribeTargetGroupAttributesRequest generates a "aws/request.Request" representing the
1705// client's request for the DescribeTargetGroupAttributes operation. The "output" return
1706// value will be populated with the request's response once the request complets
1707// successfuly.
1708//
1709// Use "Send" method on the returned Request to send the API call to the service.
1710// the "output" return value is not valid until after Send returns without error.
1711//
1712// See DescribeTargetGroupAttributes for more information on using the DescribeTargetGroupAttributes
1713// API call, and error handling.
1714//
1715// This method is useful when you want to inject custom logic or configuration
1716// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1717//
1718//
1719//    // Example sending a request using the DescribeTargetGroupAttributesRequest method.
1720//    req, resp := client.DescribeTargetGroupAttributesRequest(params)
1721//
1722//    err := req.Send()
1723//    if err == nil { // resp is now filled
1724//        fmt.Println(resp)
1725//    }
1726//
1727// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes
1728func (c *ELBV2) DescribeTargetGroupAttributesRequest(input *DescribeTargetGroupAttributesInput) (req *request.Request, output *DescribeTargetGroupAttributesOutput) {
1729	op := &request.Operation{
1730		Name:       opDescribeTargetGroupAttributes,
1731		HTTPMethod: "POST",
1732		HTTPPath:   "/",
1733	}
1734
1735	if input == nil {
1736		input = &DescribeTargetGroupAttributesInput{}
1737	}
1738
1739	output = &DescribeTargetGroupAttributesOutput{}
1740	req = c.newRequest(op, input, output)
1741	return
1742}
1743
1744// DescribeTargetGroupAttributes API operation for Elastic Load Balancing.
1745//
1746// Describes the attributes for the specified target group.
1747//
1748// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1749// with awserr.Error's Code and Message methods to get detailed information about
1750// the error.
1751//
1752// See the AWS API reference guide for Elastic Load Balancing's
1753// API operation DescribeTargetGroupAttributes for usage and error information.
1754//
1755// Returned Error Codes:
1756//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1757//   The specified target group does not exist.
1758//
1759// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes
1760func (c *ELBV2) DescribeTargetGroupAttributes(input *DescribeTargetGroupAttributesInput) (*DescribeTargetGroupAttributesOutput, error) {
1761	req, out := c.DescribeTargetGroupAttributesRequest(input)
1762	return out, req.Send()
1763}
1764
1765// DescribeTargetGroupAttributesWithContext is the same as DescribeTargetGroupAttributes with the addition of
1766// the ability to pass a context and additional request options.
1767//
1768// See DescribeTargetGroupAttributes for details on how to use this API operation.
1769//
1770// The context must be non-nil and will be used for request cancellation. If
1771// the context is nil a panic will occur. In the future the SDK may create
1772// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1773// for more information on using Contexts.
1774func (c *ELBV2) DescribeTargetGroupAttributesWithContext(ctx aws.Context, input *DescribeTargetGroupAttributesInput, opts ...request.Option) (*DescribeTargetGroupAttributesOutput, error) {
1775	req, out := c.DescribeTargetGroupAttributesRequest(input)
1776	req.SetContext(ctx)
1777	req.ApplyOptions(opts...)
1778	return out, req.Send()
1779}
1780
1781const opDescribeTargetGroups = "DescribeTargetGroups"
1782
1783// DescribeTargetGroupsRequest generates a "aws/request.Request" representing the
1784// client's request for the DescribeTargetGroups operation. The "output" return
1785// value will be populated with the request's response once the request complets
1786// successfuly.
1787//
1788// Use "Send" method on the returned Request to send the API call to the service.
1789// the "output" return value is not valid until after Send returns without error.
1790//
1791// See DescribeTargetGroups for more information on using the DescribeTargetGroups
1792// API call, and error handling.
1793//
1794// This method is useful when you want to inject custom logic or configuration
1795// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1796//
1797//
1798//    // Example sending a request using the DescribeTargetGroupsRequest method.
1799//    req, resp := client.DescribeTargetGroupsRequest(params)
1800//
1801//    err := req.Send()
1802//    if err == nil { // resp is now filled
1803//        fmt.Println(resp)
1804//    }
1805//
1806// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups
1807func (c *ELBV2) DescribeTargetGroupsRequest(input *DescribeTargetGroupsInput) (req *request.Request, output *DescribeTargetGroupsOutput) {
1808	op := &request.Operation{
1809		Name:       opDescribeTargetGroups,
1810		HTTPMethod: "POST",
1811		HTTPPath:   "/",
1812		Paginator: &request.Paginator{
1813			InputTokens:     []string{"Marker"},
1814			OutputTokens:    []string{"NextMarker"},
1815			LimitToken:      "",
1816			TruncationToken: "",
1817		},
1818	}
1819
1820	if input == nil {
1821		input = &DescribeTargetGroupsInput{}
1822	}
1823
1824	output = &DescribeTargetGroupsOutput{}
1825	req = c.newRequest(op, input, output)
1826	return
1827}
1828
1829// DescribeTargetGroups API operation for Elastic Load Balancing.
1830//
1831// Describes the specified target groups or all of your target groups. By default,
1832// all target groups are described. Alternatively, you can specify one of the
1833// following to filter the results: the ARN of the load balancer, the names
1834// of one or more target groups, or the ARNs of one or more target groups.
1835//
1836// To describe the targets for a target group, use DescribeTargetHealth. To
1837// describe the attributes of a target group, use DescribeTargetGroupAttributes.
1838//
1839// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1840// with awserr.Error's Code and Message methods to get detailed information about
1841// the error.
1842//
1843// See the AWS API reference guide for Elastic Load Balancing's
1844// API operation DescribeTargetGroups for usage and error information.
1845//
1846// Returned Error Codes:
1847//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1848//   The specified load balancer does not exist.
1849//
1850//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1851//   The specified target group does not exist.
1852//
1853// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups
1854func (c *ELBV2) DescribeTargetGroups(input *DescribeTargetGroupsInput) (*DescribeTargetGroupsOutput, error) {
1855	req, out := c.DescribeTargetGroupsRequest(input)
1856	return out, req.Send()
1857}
1858
1859// DescribeTargetGroupsWithContext is the same as DescribeTargetGroups with the addition of
1860// the ability to pass a context and additional request options.
1861//
1862// See DescribeTargetGroups for details on how to use this API operation.
1863//
1864// The context must be non-nil and will be used for request cancellation. If
1865// the context is nil a panic will occur. In the future the SDK may create
1866// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1867// for more information on using Contexts.
1868func (c *ELBV2) DescribeTargetGroupsWithContext(ctx aws.Context, input *DescribeTargetGroupsInput, opts ...request.Option) (*DescribeTargetGroupsOutput, error) {
1869	req, out := c.DescribeTargetGroupsRequest(input)
1870	req.SetContext(ctx)
1871	req.ApplyOptions(opts...)
1872	return out, req.Send()
1873}
1874
1875// DescribeTargetGroupsPages iterates over the pages of a DescribeTargetGroups operation,
1876// calling the "fn" function with the response data for each page. To stop
1877// iterating, return false from the fn function.
1878//
1879// See DescribeTargetGroups method for more information on how to use this operation.
1880//
1881// Note: This operation can generate multiple requests to a service.
1882//
1883//    // Example iterating over at most 3 pages of a DescribeTargetGroups operation.
1884//    pageNum := 0
1885//    err := client.DescribeTargetGroupsPages(params,
1886//        func(page *DescribeTargetGroupsOutput, lastPage bool) bool {
1887//            pageNum++
1888//            fmt.Println(page)
1889//            return pageNum <= 3
1890//        })
1891//
1892func (c *ELBV2) DescribeTargetGroupsPages(input *DescribeTargetGroupsInput, fn func(*DescribeTargetGroupsOutput, bool) bool) error {
1893	return c.DescribeTargetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
1894}
1895
1896// DescribeTargetGroupsPagesWithContext same as DescribeTargetGroupsPages except
1897// it takes a Context and allows setting request options on the pages.
1898//
1899// The context must be non-nil and will be used for request cancellation. If
1900// the context is nil a panic will occur. In the future the SDK may create
1901// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1902// for more information on using Contexts.
1903func (c *ELBV2) DescribeTargetGroupsPagesWithContext(ctx aws.Context, input *DescribeTargetGroupsInput, fn func(*DescribeTargetGroupsOutput, bool) bool, opts ...request.Option) error {
1904	p := request.Pagination{
1905		NewRequest: func() (*request.Request, error) {
1906			var inCpy *DescribeTargetGroupsInput
1907			if input != nil {
1908				tmp := *input
1909				inCpy = &tmp
1910			}
1911			req, _ := c.DescribeTargetGroupsRequest(inCpy)
1912			req.SetContext(ctx)
1913			req.ApplyOptions(opts...)
1914			return req, nil
1915		},
1916	}
1917
1918	cont := true
1919	for p.Next() && cont {
1920		cont = fn(p.Page().(*DescribeTargetGroupsOutput), !p.HasNextPage())
1921	}
1922	return p.Err()
1923}
1924
1925const opDescribeTargetHealth = "DescribeTargetHealth"
1926
1927// DescribeTargetHealthRequest generates a "aws/request.Request" representing the
1928// client's request for the DescribeTargetHealth operation. The "output" return
1929// value will be populated with the request's response once the request complets
1930// successfuly.
1931//
1932// Use "Send" method on the returned Request to send the API call to the service.
1933// the "output" return value is not valid until after Send returns without error.
1934//
1935// See DescribeTargetHealth for more information on using the DescribeTargetHealth
1936// API call, and error handling.
1937//
1938// This method is useful when you want to inject custom logic or configuration
1939// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1940//
1941//
1942//    // Example sending a request using the DescribeTargetHealthRequest method.
1943//    req, resp := client.DescribeTargetHealthRequest(params)
1944//
1945//    err := req.Send()
1946//    if err == nil { // resp is now filled
1947//        fmt.Println(resp)
1948//    }
1949//
1950// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth
1951func (c *ELBV2) DescribeTargetHealthRequest(input *DescribeTargetHealthInput) (req *request.Request, output *DescribeTargetHealthOutput) {
1952	op := &request.Operation{
1953		Name:       opDescribeTargetHealth,
1954		HTTPMethod: "POST",
1955		HTTPPath:   "/",
1956	}
1957
1958	if input == nil {
1959		input = &DescribeTargetHealthInput{}
1960	}
1961
1962	output = &DescribeTargetHealthOutput{}
1963	req = c.newRequest(op, input, output)
1964	return
1965}
1966
1967// DescribeTargetHealth API operation for Elastic Load Balancing.
1968//
1969// Describes the health of the specified targets or all of your targets.
1970//
1971// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1972// with awserr.Error's Code and Message methods to get detailed information about
1973// the error.
1974//
1975// See the AWS API reference guide for Elastic Load Balancing's
1976// API operation DescribeTargetHealth for usage and error information.
1977//
1978// Returned Error Codes:
1979//   * ErrCodeInvalidTargetException "InvalidTarget"
1980//   The specified target does not exist or is not in the same VPC as the target
1981//   group.
1982//
1983//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1984//   The specified target group does not exist.
1985//
1986//   * ErrCodeHealthUnavailableException "HealthUnavailable"
1987//   The health of the specified targets could not be retrieved due to an internal
1988//   error.
1989//
1990// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth
1991func (c *ELBV2) DescribeTargetHealth(input *DescribeTargetHealthInput) (*DescribeTargetHealthOutput, error) {
1992	req, out := c.DescribeTargetHealthRequest(input)
1993	return out, req.Send()
1994}
1995
1996// DescribeTargetHealthWithContext is the same as DescribeTargetHealth with the addition of
1997// the ability to pass a context and additional request options.
1998//
1999// See DescribeTargetHealth for details on how to use this API operation.
2000//
2001// The context must be non-nil and will be used for request cancellation. If
2002// the context is nil a panic will occur. In the future the SDK may create
2003// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2004// for more information on using Contexts.
2005func (c *ELBV2) DescribeTargetHealthWithContext(ctx aws.Context, input *DescribeTargetHealthInput, opts ...request.Option) (*DescribeTargetHealthOutput, error) {
2006	req, out := c.DescribeTargetHealthRequest(input)
2007	req.SetContext(ctx)
2008	req.ApplyOptions(opts...)
2009	return out, req.Send()
2010}
2011
2012const opModifyListener = "ModifyListener"
2013
2014// ModifyListenerRequest generates a "aws/request.Request" representing the
2015// client's request for the ModifyListener operation. The "output" return
2016// value will be populated with the request's response once the request complets
2017// successfuly.
2018//
2019// Use "Send" method on the returned Request to send the API call to the service.
2020// the "output" return value is not valid until after Send returns without error.
2021//
2022// See ModifyListener for more information on using the ModifyListener
2023// API call, and error handling.
2024//
2025// This method is useful when you want to inject custom logic or configuration
2026// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2027//
2028//
2029//    // Example sending a request using the ModifyListenerRequest method.
2030//    req, resp := client.ModifyListenerRequest(params)
2031//
2032//    err := req.Send()
2033//    if err == nil { // resp is now filled
2034//        fmt.Println(resp)
2035//    }
2036//
2037// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener
2038func (c *ELBV2) ModifyListenerRequest(input *ModifyListenerInput) (req *request.Request, output *ModifyListenerOutput) {
2039	op := &request.Operation{
2040		Name:       opModifyListener,
2041		HTTPMethod: "POST",
2042		HTTPPath:   "/",
2043	}
2044
2045	if input == nil {
2046		input = &ModifyListenerInput{}
2047	}
2048
2049	output = &ModifyListenerOutput{}
2050	req = c.newRequest(op, input, output)
2051	return
2052}
2053
2054// ModifyListener API operation for Elastic Load Balancing.
2055//
2056// Modifies the specified properties of the specified listener.
2057//
2058// Any properties that you do not specify retain their current values. However,
2059// changing the protocol from HTTPS to HTTP removes the security policy and
2060// SSL certificate properties. If you change the protocol from HTTP to HTTPS,
2061// you must add the security policy and server certificate.
2062//
2063// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2064// with awserr.Error's Code and Message methods to get detailed information about
2065// the error.
2066//
2067// See the AWS API reference guide for Elastic Load Balancing's
2068// API operation ModifyListener for usage and error information.
2069//
2070// Returned Error Codes:
2071//   * ErrCodeDuplicateListenerException "DuplicateListener"
2072//   A listener with the specified port already exists.
2073//
2074//   * ErrCodeTooManyListenersException "TooManyListeners"
2075//   You've reached the limit on the number of listeners per load balancer.
2076//
2077//   * ErrCodeTooManyCertificatesException "TooManyCertificates"
2078//   You've reached the limit on the number of certificates per listener.
2079//
2080//   * ErrCodeListenerNotFoundException "ListenerNotFound"
2081//   The specified listener does not exist.
2082//
2083//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2084//   The specified target group does not exist.
2085//
2086//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
2087//   You've reached the limit on the number of load balancers per target group.
2088//
2089//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
2090//   The specified configuration is not valid with this protocol.
2091//
2092//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
2093//   The specified SSL policy does not exist.
2094//
2095//   * ErrCodeCertificateNotFoundException "CertificateNotFound"
2096//   The specified certificate does not exist.
2097//
2098//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2099//   The requested configuration is not valid.
2100//
2101//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
2102//   The specified protocol is not supported.
2103//
2104//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2105//   You've reached the limit on the number of times a target can be registered
2106//   with a load balancer.
2107//
2108//   * ErrCodeTooManyTargetsException "TooManyTargets"
2109//   You've reached the limit on the number of targets.
2110//
2111// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener
2112func (c *ELBV2) ModifyListener(input *ModifyListenerInput) (*ModifyListenerOutput, error) {
2113	req, out := c.ModifyListenerRequest(input)
2114	return out, req.Send()
2115}
2116
2117// ModifyListenerWithContext is the same as ModifyListener with the addition of
2118// the ability to pass a context and additional request options.
2119//
2120// See ModifyListener for details on how to use this API operation.
2121//
2122// The context must be non-nil and will be used for request cancellation. If
2123// the context is nil a panic will occur. In the future the SDK may create
2124// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2125// for more information on using Contexts.
2126func (c *ELBV2) ModifyListenerWithContext(ctx aws.Context, input *ModifyListenerInput, opts ...request.Option) (*ModifyListenerOutput, error) {
2127	req, out := c.ModifyListenerRequest(input)
2128	req.SetContext(ctx)
2129	req.ApplyOptions(opts...)
2130	return out, req.Send()
2131}
2132
2133const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes"
2134
2135// ModifyLoadBalancerAttributesRequest generates a "aws/request.Request" representing the
2136// client's request for the ModifyLoadBalancerAttributes operation. The "output" return
2137// value will be populated with the request's response once the request complets
2138// successfuly.
2139//
2140// Use "Send" method on the returned Request to send the API call to the service.
2141// the "output" return value is not valid until after Send returns without error.
2142//
2143// See ModifyLoadBalancerAttributes for more information on using the ModifyLoadBalancerAttributes
2144// API call, and error handling.
2145//
2146// This method is useful when you want to inject custom logic or configuration
2147// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2148//
2149//
2150//    // Example sending a request using the ModifyLoadBalancerAttributesRequest method.
2151//    req, resp := client.ModifyLoadBalancerAttributesRequest(params)
2152//
2153//    err := req.Send()
2154//    if err == nil { // resp is now filled
2155//        fmt.Println(resp)
2156//    }
2157//
2158// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes
2159func (c *ELBV2) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAttributesInput) (req *request.Request, output *ModifyLoadBalancerAttributesOutput) {
2160	op := &request.Operation{
2161		Name:       opModifyLoadBalancerAttributes,
2162		HTTPMethod: "POST",
2163		HTTPPath:   "/",
2164	}
2165
2166	if input == nil {
2167		input = &ModifyLoadBalancerAttributesInput{}
2168	}
2169
2170	output = &ModifyLoadBalancerAttributesOutput{}
2171	req = c.newRequest(op, input, output)
2172	return
2173}
2174
2175// ModifyLoadBalancerAttributes API operation for Elastic Load Balancing.
2176//
2177// Modifies the specified attributes of the specified Application Load Balancer
2178// or Network Load Balancer.
2179//
2180// If any of the specified attributes can't be modified as requested, the call
2181// fails. Any existing attributes that you do not modify retain their current
2182// values.
2183//
2184// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2185// with awserr.Error's Code and Message methods to get detailed information about
2186// the error.
2187//
2188// See the AWS API reference guide for Elastic Load Balancing's
2189// API operation ModifyLoadBalancerAttributes for usage and error information.
2190//
2191// Returned Error Codes:
2192//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2193//   The specified load balancer does not exist.
2194//
2195//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2196//   The requested configuration is not valid.
2197//
2198// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes
2199func (c *ELBV2) ModifyLoadBalancerAttributes(input *ModifyLoadBalancerAttributesInput) (*ModifyLoadBalancerAttributesOutput, error) {
2200	req, out := c.ModifyLoadBalancerAttributesRequest(input)
2201	return out, req.Send()
2202}
2203
2204// ModifyLoadBalancerAttributesWithContext is the same as ModifyLoadBalancerAttributes with the addition of
2205// the ability to pass a context and additional request options.
2206//
2207// See ModifyLoadBalancerAttributes for details on how to use this API operation.
2208//
2209// The context must be non-nil and will be used for request cancellation. If
2210// the context is nil a panic will occur. In the future the SDK may create
2211// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2212// for more information on using Contexts.
2213func (c *ELBV2) ModifyLoadBalancerAttributesWithContext(ctx aws.Context, input *ModifyLoadBalancerAttributesInput, opts ...request.Option) (*ModifyLoadBalancerAttributesOutput, error) {
2214	req, out := c.ModifyLoadBalancerAttributesRequest(input)
2215	req.SetContext(ctx)
2216	req.ApplyOptions(opts...)
2217	return out, req.Send()
2218}
2219
2220const opModifyRule = "ModifyRule"
2221
2222// ModifyRuleRequest generates a "aws/request.Request" representing the
2223// client's request for the ModifyRule operation. The "output" return
2224// value will be populated with the request's response once the request complets
2225// successfuly.
2226//
2227// Use "Send" method on the returned Request to send the API call to the service.
2228// the "output" return value is not valid until after Send returns without error.
2229//
2230// See ModifyRule for more information on using the ModifyRule
2231// API call, and error handling.
2232//
2233// This method is useful when you want to inject custom logic or configuration
2234// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2235//
2236//
2237//    // Example sending a request using the ModifyRuleRequest method.
2238//    req, resp := client.ModifyRuleRequest(params)
2239//
2240//    err := req.Send()
2241//    if err == nil { // resp is now filled
2242//        fmt.Println(resp)
2243//    }
2244//
2245// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule
2246func (c *ELBV2) ModifyRuleRequest(input *ModifyRuleInput) (req *request.Request, output *ModifyRuleOutput) {
2247	op := &request.Operation{
2248		Name:       opModifyRule,
2249		HTTPMethod: "POST",
2250		HTTPPath:   "/",
2251	}
2252
2253	if input == nil {
2254		input = &ModifyRuleInput{}
2255	}
2256
2257	output = &ModifyRuleOutput{}
2258	req = c.newRequest(op, input, output)
2259	return
2260}
2261
2262// ModifyRule API operation for Elastic Load Balancing.
2263//
2264// Modifies the specified rule.
2265//
2266// Any existing properties that you do not modify retain their current values.
2267//
2268// To modify the default action, use ModifyListener.
2269//
2270// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2271// with awserr.Error's Code and Message methods to get detailed information about
2272// the error.
2273//
2274// See the AWS API reference guide for Elastic Load Balancing's
2275// API operation ModifyRule for usage and error information.
2276//
2277// Returned Error Codes:
2278//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
2279//   You've reached the limit on the number of load balancers per target group.
2280//
2281//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
2282//   The specified configuration is not valid with this protocol.
2283//
2284//   * ErrCodeRuleNotFoundException "RuleNotFound"
2285//   The specified rule does not exist.
2286//
2287//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
2288//   This operation is not allowed.
2289//
2290//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2291//   You've reached the limit on the number of times a target can be registered
2292//   with a load balancer.
2293//
2294//   * ErrCodeTooManyTargetsException "TooManyTargets"
2295//   You've reached the limit on the number of targets.
2296//
2297//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2298//   The specified target group does not exist.
2299//
2300// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule
2301func (c *ELBV2) ModifyRule(input *ModifyRuleInput) (*ModifyRuleOutput, error) {
2302	req, out := c.ModifyRuleRequest(input)
2303	return out, req.Send()
2304}
2305
2306// ModifyRuleWithContext is the same as ModifyRule with the addition of
2307// the ability to pass a context and additional request options.
2308//
2309// See ModifyRule for details on how to use this API operation.
2310//
2311// The context must be non-nil and will be used for request cancellation. If
2312// the context is nil a panic will occur. In the future the SDK may create
2313// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2314// for more information on using Contexts.
2315func (c *ELBV2) ModifyRuleWithContext(ctx aws.Context, input *ModifyRuleInput, opts ...request.Option) (*ModifyRuleOutput, error) {
2316	req, out := c.ModifyRuleRequest(input)
2317	req.SetContext(ctx)
2318	req.ApplyOptions(opts...)
2319	return out, req.Send()
2320}
2321
2322const opModifyTargetGroup = "ModifyTargetGroup"
2323
2324// ModifyTargetGroupRequest generates a "aws/request.Request" representing the
2325// client's request for the ModifyTargetGroup operation. The "output" return
2326// value will be populated with the request's response once the request complets
2327// successfuly.
2328//
2329// Use "Send" method on the returned Request to send the API call to the service.
2330// the "output" return value is not valid until after Send returns without error.
2331//
2332// See ModifyTargetGroup for more information on using the ModifyTargetGroup
2333// API call, and error handling.
2334//
2335// This method is useful when you want to inject custom logic or configuration
2336// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2337//
2338//
2339//    // Example sending a request using the ModifyTargetGroupRequest method.
2340//    req, resp := client.ModifyTargetGroupRequest(params)
2341//
2342//    err := req.Send()
2343//    if err == nil { // resp is now filled
2344//        fmt.Println(resp)
2345//    }
2346//
2347// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup
2348func (c *ELBV2) ModifyTargetGroupRequest(input *ModifyTargetGroupInput) (req *request.Request, output *ModifyTargetGroupOutput) {
2349	op := &request.Operation{
2350		Name:       opModifyTargetGroup,
2351		HTTPMethod: "POST",
2352		HTTPPath:   "/",
2353	}
2354
2355	if input == nil {
2356		input = &ModifyTargetGroupInput{}
2357	}
2358
2359	output = &ModifyTargetGroupOutput{}
2360	req = c.newRequest(op, input, output)
2361	return
2362}
2363
2364// ModifyTargetGroup API operation for Elastic Load Balancing.
2365//
2366// Modifies the health checks used when evaluating the health state of the targets
2367// in the specified target group.
2368//
2369// To monitor the health of the targets, use DescribeTargetHealth.
2370//
2371// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2372// with awserr.Error's Code and Message methods to get detailed information about
2373// the error.
2374//
2375// See the AWS API reference guide for Elastic Load Balancing's
2376// API operation ModifyTargetGroup for usage and error information.
2377//
2378// Returned Error Codes:
2379//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2380//   The specified target group does not exist.
2381//
2382//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2383//   The requested configuration is not valid.
2384//
2385// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup
2386func (c *ELBV2) ModifyTargetGroup(input *ModifyTargetGroupInput) (*ModifyTargetGroupOutput, error) {
2387	req, out := c.ModifyTargetGroupRequest(input)
2388	return out, req.Send()
2389}
2390
2391// ModifyTargetGroupWithContext is the same as ModifyTargetGroup with the addition of
2392// the ability to pass a context and additional request options.
2393//
2394// See ModifyTargetGroup for details on how to use this API operation.
2395//
2396// The context must be non-nil and will be used for request cancellation. If
2397// the context is nil a panic will occur. In the future the SDK may create
2398// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2399// for more information on using Contexts.
2400func (c *ELBV2) ModifyTargetGroupWithContext(ctx aws.Context, input *ModifyTargetGroupInput, opts ...request.Option) (*ModifyTargetGroupOutput, error) {
2401	req, out := c.ModifyTargetGroupRequest(input)
2402	req.SetContext(ctx)
2403	req.ApplyOptions(opts...)
2404	return out, req.Send()
2405}
2406
2407const opModifyTargetGroupAttributes = "ModifyTargetGroupAttributes"
2408
2409// ModifyTargetGroupAttributesRequest generates a "aws/request.Request" representing the
2410// client's request for the ModifyTargetGroupAttributes operation. The "output" return
2411// value will be populated with the request's response once the request complets
2412// successfuly.
2413//
2414// Use "Send" method on the returned Request to send the API call to the service.
2415// the "output" return value is not valid until after Send returns without error.
2416//
2417// See ModifyTargetGroupAttributes for more information on using the ModifyTargetGroupAttributes
2418// API call, and error handling.
2419//
2420// This method is useful when you want to inject custom logic or configuration
2421// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2422//
2423//
2424//    // Example sending a request using the ModifyTargetGroupAttributesRequest method.
2425//    req, resp := client.ModifyTargetGroupAttributesRequest(params)
2426//
2427//    err := req.Send()
2428//    if err == nil { // resp is now filled
2429//        fmt.Println(resp)
2430//    }
2431//
2432// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes
2433func (c *ELBV2) ModifyTargetGroupAttributesRequest(input *ModifyTargetGroupAttributesInput) (req *request.Request, output *ModifyTargetGroupAttributesOutput) {
2434	op := &request.Operation{
2435		Name:       opModifyTargetGroupAttributes,
2436		HTTPMethod: "POST",
2437		HTTPPath:   "/",
2438	}
2439
2440	if input == nil {
2441		input = &ModifyTargetGroupAttributesInput{}
2442	}
2443
2444	output = &ModifyTargetGroupAttributesOutput{}
2445	req = c.newRequest(op, input, output)
2446	return
2447}
2448
2449// ModifyTargetGroupAttributes API operation for Elastic Load Balancing.
2450//
2451// Modifies the specified attributes of the specified target group.
2452//
2453// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2454// with awserr.Error's Code and Message methods to get detailed information about
2455// the error.
2456//
2457// See the AWS API reference guide for Elastic Load Balancing's
2458// API operation ModifyTargetGroupAttributes for usage and error information.
2459//
2460// Returned Error Codes:
2461//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2462//   The specified target group does not exist.
2463//
2464//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2465//   The requested configuration is not valid.
2466//
2467// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes
2468func (c *ELBV2) ModifyTargetGroupAttributes(input *ModifyTargetGroupAttributesInput) (*ModifyTargetGroupAttributesOutput, error) {
2469	req, out := c.ModifyTargetGroupAttributesRequest(input)
2470	return out, req.Send()
2471}
2472
2473// ModifyTargetGroupAttributesWithContext is the same as ModifyTargetGroupAttributes with the addition of
2474// the ability to pass a context and additional request options.
2475//
2476// See ModifyTargetGroupAttributes for details on how to use this API operation.
2477//
2478// The context must be non-nil and will be used for request cancellation. If
2479// the context is nil a panic will occur. In the future the SDK may create
2480// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2481// for more information on using Contexts.
2482func (c *ELBV2) ModifyTargetGroupAttributesWithContext(ctx aws.Context, input *ModifyTargetGroupAttributesInput, opts ...request.Option) (*ModifyTargetGroupAttributesOutput, error) {
2483	req, out := c.ModifyTargetGroupAttributesRequest(input)
2484	req.SetContext(ctx)
2485	req.ApplyOptions(opts...)
2486	return out, req.Send()
2487}
2488
2489const opRegisterTargets = "RegisterTargets"
2490
2491// RegisterTargetsRequest generates a "aws/request.Request" representing the
2492// client's request for the RegisterTargets operation. The "output" return
2493// value will be populated with the request's response once the request complets
2494// successfuly.
2495//
2496// Use "Send" method on the returned Request to send the API call to the service.
2497// the "output" return value is not valid until after Send returns without error.
2498//
2499// See RegisterTargets for more information on using the RegisterTargets
2500// API call, and error handling.
2501//
2502// This method is useful when you want to inject custom logic or configuration
2503// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2504//
2505//
2506//    // Example sending a request using the RegisterTargetsRequest method.
2507//    req, resp := client.RegisterTargetsRequest(params)
2508//
2509//    err := req.Send()
2510//    if err == nil { // resp is now filled
2511//        fmt.Println(resp)
2512//    }
2513//
2514// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets
2515func (c *ELBV2) RegisterTargetsRequest(input *RegisterTargetsInput) (req *request.Request, output *RegisterTargetsOutput) {
2516	op := &request.Operation{
2517		Name:       opRegisterTargets,
2518		HTTPMethod: "POST",
2519		HTTPPath:   "/",
2520	}
2521
2522	if input == nil {
2523		input = &RegisterTargetsInput{}
2524	}
2525
2526	output = &RegisterTargetsOutput{}
2527	req = c.newRequest(op, input, output)
2528	return
2529}
2530
2531// RegisterTargets API operation for Elastic Load Balancing.
2532//
2533// Registers the specified targets with the specified target group.
2534//
2535// By default, the load balancer routes requests to registered targets using
2536// the protocol and port number for the target group. Alternatively, you can
2537// override the port for a target when you register it.
2538//
2539// The target must be in the virtual private cloud (VPC) that you specified
2540// for the target group. If the target is an EC2 instance, it must be in the
2541// running state when you register it.
2542//
2543// Network Load Balancers do not support the following instance types as targets:
2544// C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and T1.
2545//
2546// To remove a target from a target group, use DeregisterTargets.
2547//
2548// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2549// with awserr.Error's Code and Message methods to get detailed information about
2550// the error.
2551//
2552// See the AWS API reference guide for Elastic Load Balancing's
2553// API operation RegisterTargets for usage and error information.
2554//
2555// Returned Error Codes:
2556//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2557//   The specified target group does not exist.
2558//
2559//   * ErrCodeTooManyTargetsException "TooManyTargets"
2560//   You've reached the limit on the number of targets.
2561//
2562//   * ErrCodeInvalidTargetException "InvalidTarget"
2563//   The specified target does not exist or is not in the same VPC as the target
2564//   group.
2565//
2566//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2567//   You've reached the limit on the number of times a target can be registered
2568//   with a load balancer.
2569//
2570// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets
2571func (c *ELBV2) RegisterTargets(input *RegisterTargetsInput) (*RegisterTargetsOutput, error) {
2572	req, out := c.RegisterTargetsRequest(input)
2573	return out, req.Send()
2574}
2575
2576// RegisterTargetsWithContext is the same as RegisterTargets with the addition of
2577// the ability to pass a context and additional request options.
2578//
2579// See RegisterTargets for details on how to use this API operation.
2580//
2581// The context must be non-nil and will be used for request cancellation. If
2582// the context is nil a panic will occur. In the future the SDK may create
2583// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2584// for more information on using Contexts.
2585func (c *ELBV2) RegisterTargetsWithContext(ctx aws.Context, input *RegisterTargetsInput, opts ...request.Option) (*RegisterTargetsOutput, error) {
2586	req, out := c.RegisterTargetsRequest(input)
2587	req.SetContext(ctx)
2588	req.ApplyOptions(opts...)
2589	return out, req.Send()
2590}
2591
2592const opRemoveTags = "RemoveTags"
2593
2594// RemoveTagsRequest generates a "aws/request.Request" representing the
2595// client's request for the RemoveTags operation. The "output" return
2596// value will be populated with the request's response once the request complets
2597// successfuly.
2598//
2599// Use "Send" method on the returned Request to send the API call to the service.
2600// the "output" return value is not valid until after Send returns without error.
2601//
2602// See RemoveTags for more information on using the RemoveTags
2603// API call, and error handling.
2604//
2605// This method is useful when you want to inject custom logic or configuration
2606// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2607//
2608//
2609//    // Example sending a request using the RemoveTagsRequest method.
2610//    req, resp := client.RemoveTagsRequest(params)
2611//
2612//    err := req.Send()
2613//    if err == nil { // resp is now filled
2614//        fmt.Println(resp)
2615//    }
2616//
2617// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags
2618func (c *ELBV2) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) {
2619	op := &request.Operation{
2620		Name:       opRemoveTags,
2621		HTTPMethod: "POST",
2622		HTTPPath:   "/",
2623	}
2624
2625	if input == nil {
2626		input = &RemoveTagsInput{}
2627	}
2628
2629	output = &RemoveTagsOutput{}
2630	req = c.newRequest(op, input, output)
2631	return
2632}
2633
2634// RemoveTags API operation for Elastic Load Balancing.
2635//
2636// Removes the specified tags from the specified Elastic Load Balancing resource.
2637//
2638// To list the current tags for your resources, use DescribeTags.
2639//
2640// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2641// with awserr.Error's Code and Message methods to get detailed information about
2642// the error.
2643//
2644// See the AWS API reference guide for Elastic Load Balancing's
2645// API operation RemoveTags for usage and error information.
2646//
2647// Returned Error Codes:
2648//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2649//   The specified load balancer does not exist.
2650//
2651//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2652//   The specified target group does not exist.
2653//
2654//   * ErrCodeListenerNotFoundException "ListenerNotFound"
2655//   The specified listener does not exist.
2656//
2657//   * ErrCodeRuleNotFoundException "RuleNotFound"
2658//   The specified rule does not exist.
2659//
2660//   * ErrCodeTooManyTagsException "TooManyTags"
2661//   You've reached the limit on the number of tags per load balancer.
2662//
2663// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags
2664func (c *ELBV2) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) {
2665	req, out := c.RemoveTagsRequest(input)
2666	return out, req.Send()
2667}
2668
2669// RemoveTagsWithContext is the same as RemoveTags with the addition of
2670// the ability to pass a context and additional request options.
2671//
2672// See RemoveTags for details on how to use this API operation.
2673//
2674// The context must be non-nil and will be used for request cancellation. If
2675// the context is nil a panic will occur. In the future the SDK may create
2676// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2677// for more information on using Contexts.
2678func (c *ELBV2) RemoveTagsWithContext(ctx aws.Context, input *RemoveTagsInput, opts ...request.Option) (*RemoveTagsOutput, error) {
2679	req, out := c.RemoveTagsRequest(input)
2680	req.SetContext(ctx)
2681	req.ApplyOptions(opts...)
2682	return out, req.Send()
2683}
2684
2685const opSetIpAddressType = "SetIpAddressType"
2686
2687// SetIpAddressTypeRequest generates a "aws/request.Request" representing the
2688// client's request for the SetIpAddressType operation. The "output" return
2689// value will be populated with the request's response once the request complets
2690// successfuly.
2691//
2692// Use "Send" method on the returned Request to send the API call to the service.
2693// the "output" return value is not valid until after Send returns without error.
2694//
2695// See SetIpAddressType for more information on using the SetIpAddressType
2696// API call, and error handling.
2697//
2698// This method is useful when you want to inject custom logic or configuration
2699// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2700//
2701//
2702//    // Example sending a request using the SetIpAddressTypeRequest method.
2703//    req, resp := client.SetIpAddressTypeRequest(params)
2704//
2705//    err := req.Send()
2706//    if err == nil { // resp is now filled
2707//        fmt.Println(resp)
2708//    }
2709//
2710// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType
2711func (c *ELBV2) SetIpAddressTypeRequest(input *SetIpAddressTypeInput) (req *request.Request, output *SetIpAddressTypeOutput) {
2712	op := &request.Operation{
2713		Name:       opSetIpAddressType,
2714		HTTPMethod: "POST",
2715		HTTPPath:   "/",
2716	}
2717
2718	if input == nil {
2719		input = &SetIpAddressTypeInput{}
2720	}
2721
2722	output = &SetIpAddressTypeOutput{}
2723	req = c.newRequest(op, input, output)
2724	return
2725}
2726
2727// SetIpAddressType API operation for Elastic Load Balancing.
2728//
2729// Sets the type of IP addresses used by the subnets of the specified Application
2730// Load Balancer or Network Load Balancer.
2731//
2732// Note that Network Load Balancers must use ipv4.
2733//
2734// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2735// with awserr.Error's Code and Message methods to get detailed information about
2736// the error.
2737//
2738// See the AWS API reference guide for Elastic Load Balancing's
2739// API operation SetIpAddressType for usage and error information.
2740//
2741// Returned Error Codes:
2742//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2743//   The specified load balancer does not exist.
2744//
2745//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2746//   The requested configuration is not valid.
2747//
2748//   * ErrCodeInvalidSubnetException "InvalidSubnet"
2749//   The specified subnet is out of available addresses.
2750//
2751// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType
2752func (c *ELBV2) SetIpAddressType(input *SetIpAddressTypeInput) (*SetIpAddressTypeOutput, error) {
2753	req, out := c.SetIpAddressTypeRequest(input)
2754	return out, req.Send()
2755}
2756
2757// SetIpAddressTypeWithContext is the same as SetIpAddressType with the addition of
2758// the ability to pass a context and additional request options.
2759//
2760// See SetIpAddressType for details on how to use this API operation.
2761//
2762// The context must be non-nil and will be used for request cancellation. If
2763// the context is nil a panic will occur. In the future the SDK may create
2764// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2765// for more information on using Contexts.
2766func (c *ELBV2) SetIpAddressTypeWithContext(ctx aws.Context, input *SetIpAddressTypeInput, opts ...request.Option) (*SetIpAddressTypeOutput, error) {
2767	req, out := c.SetIpAddressTypeRequest(input)
2768	req.SetContext(ctx)
2769	req.ApplyOptions(opts...)
2770	return out, req.Send()
2771}
2772
2773const opSetRulePriorities = "SetRulePriorities"
2774
2775// SetRulePrioritiesRequest generates a "aws/request.Request" representing the
2776// client's request for the SetRulePriorities operation. The "output" return
2777// value will be populated with the request's response once the request complets
2778// successfuly.
2779//
2780// Use "Send" method on the returned Request to send the API call to the service.
2781// the "output" return value is not valid until after Send returns without error.
2782//
2783// See SetRulePriorities for more information on using the SetRulePriorities
2784// API call, and error handling.
2785//
2786// This method is useful when you want to inject custom logic or configuration
2787// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2788//
2789//
2790//    // Example sending a request using the SetRulePrioritiesRequest method.
2791//    req, resp := client.SetRulePrioritiesRequest(params)
2792//
2793//    err := req.Send()
2794//    if err == nil { // resp is now filled
2795//        fmt.Println(resp)
2796//    }
2797//
2798// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities
2799func (c *ELBV2) SetRulePrioritiesRequest(input *SetRulePrioritiesInput) (req *request.Request, output *SetRulePrioritiesOutput) {
2800	op := &request.Operation{
2801		Name:       opSetRulePriorities,
2802		HTTPMethod: "POST",
2803		HTTPPath:   "/",
2804	}
2805
2806	if input == nil {
2807		input = &SetRulePrioritiesInput{}
2808	}
2809
2810	output = &SetRulePrioritiesOutput{}
2811	req = c.newRequest(op, input, output)
2812	return
2813}
2814
2815// SetRulePriorities API operation for Elastic Load Balancing.
2816//
2817// Sets the priorities of the specified rules.
2818//
2819// You can reorder the rules as long as there are no priority conflicts in the
2820// new order. Any existing rules that you do not specify retain their current
2821// priority.
2822//
2823// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2824// with awserr.Error's Code and Message methods to get detailed information about
2825// the error.
2826//
2827// See the AWS API reference guide for Elastic Load Balancing's
2828// API operation SetRulePriorities for usage and error information.
2829//
2830// Returned Error Codes:
2831//   * ErrCodeRuleNotFoundException "RuleNotFound"
2832//   The specified rule does not exist.
2833//
2834//   * ErrCodePriorityInUseException "PriorityInUse"
2835//   The specified priority is in use.
2836//
2837//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
2838//   This operation is not allowed.
2839//
2840// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities
2841func (c *ELBV2) SetRulePriorities(input *SetRulePrioritiesInput) (*SetRulePrioritiesOutput, error) {
2842	req, out := c.SetRulePrioritiesRequest(input)
2843	return out, req.Send()
2844}
2845
2846// SetRulePrioritiesWithContext is the same as SetRulePriorities with the addition of
2847// the ability to pass a context and additional request options.
2848//
2849// See SetRulePriorities for details on how to use this API operation.
2850//
2851// The context must be non-nil and will be used for request cancellation. If
2852// the context is nil a panic will occur. In the future the SDK may create
2853// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2854// for more information on using Contexts.
2855func (c *ELBV2) SetRulePrioritiesWithContext(ctx aws.Context, input *SetRulePrioritiesInput, opts ...request.Option) (*SetRulePrioritiesOutput, error) {
2856	req, out := c.SetRulePrioritiesRequest(input)
2857	req.SetContext(ctx)
2858	req.ApplyOptions(opts...)
2859	return out, req.Send()
2860}
2861
2862const opSetSecurityGroups = "SetSecurityGroups"
2863
2864// SetSecurityGroupsRequest generates a "aws/request.Request" representing the
2865// client's request for the SetSecurityGroups operation. The "output" return
2866// value will be populated with the request's response once the request complets
2867// successfuly.
2868//
2869// Use "Send" method on the returned Request to send the API call to the service.
2870// the "output" return value is not valid until after Send returns without error.
2871//
2872// See SetSecurityGroups for more information on using the SetSecurityGroups
2873// API call, and error handling.
2874//
2875// This method is useful when you want to inject custom logic or configuration
2876// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2877//
2878//
2879//    // Example sending a request using the SetSecurityGroupsRequest method.
2880//    req, resp := client.SetSecurityGroupsRequest(params)
2881//
2882//    err := req.Send()
2883//    if err == nil { // resp is now filled
2884//        fmt.Println(resp)
2885//    }
2886//
2887// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups
2888func (c *ELBV2) SetSecurityGroupsRequest(input *SetSecurityGroupsInput) (req *request.Request, output *SetSecurityGroupsOutput) {
2889	op := &request.Operation{
2890		Name:       opSetSecurityGroups,
2891		HTTPMethod: "POST",
2892		HTTPPath:   "/",
2893	}
2894
2895	if input == nil {
2896		input = &SetSecurityGroupsInput{}
2897	}
2898
2899	output = &SetSecurityGroupsOutput{}
2900	req = c.newRequest(op, input, output)
2901	return
2902}
2903
2904// SetSecurityGroups API operation for Elastic Load Balancing.
2905//
2906// Associates the specified security groups with the specified Application Load
2907// Balancer. The specified security groups override the previously associated
2908// security groups.
2909//
2910// Note that you can't specify a security group for a Network Load Balancer.
2911//
2912// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2913// with awserr.Error's Code and Message methods to get detailed information about
2914// the error.
2915//
2916// See the AWS API reference guide for Elastic Load Balancing's
2917// API operation SetSecurityGroups for usage and error information.
2918//
2919// Returned Error Codes:
2920//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2921//   The specified load balancer does not exist.
2922//
2923//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2924//   The requested configuration is not valid.
2925//
2926//   * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup"
2927//   The specified security group does not exist.
2928//
2929// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups
2930func (c *ELBV2) SetSecurityGroups(input *SetSecurityGroupsInput) (*SetSecurityGroupsOutput, error) {
2931	req, out := c.SetSecurityGroupsRequest(input)
2932	return out, req.Send()
2933}
2934
2935// SetSecurityGroupsWithContext is the same as SetSecurityGroups with the addition of
2936// the ability to pass a context and additional request options.
2937//
2938// See SetSecurityGroups for details on how to use this API operation.
2939//
2940// The context must be non-nil and will be used for request cancellation. If
2941// the context is nil a panic will occur. In the future the SDK may create
2942// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2943// for more information on using Contexts.
2944func (c *ELBV2) SetSecurityGroupsWithContext(ctx aws.Context, input *SetSecurityGroupsInput, opts ...request.Option) (*SetSecurityGroupsOutput, error) {
2945	req, out := c.SetSecurityGroupsRequest(input)
2946	req.SetContext(ctx)
2947	req.ApplyOptions(opts...)
2948	return out, req.Send()
2949}
2950
2951const opSetSubnets = "SetSubnets"
2952
2953// SetSubnetsRequest generates a "aws/request.Request" representing the
2954// client's request for the SetSubnets operation. The "output" return
2955// value will be populated with the request's response once the request complets
2956// successfuly.
2957//
2958// Use "Send" method on the returned Request to send the API call to the service.
2959// the "output" return value is not valid until after Send returns without error.
2960//
2961// See SetSubnets for more information on using the SetSubnets
2962// API call, and error handling.
2963//
2964// This method is useful when you want to inject custom logic or configuration
2965// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2966//
2967//
2968//    // Example sending a request using the SetSubnetsRequest method.
2969//    req, resp := client.SetSubnetsRequest(params)
2970//
2971//    err := req.Send()
2972//    if err == nil { // resp is now filled
2973//        fmt.Println(resp)
2974//    }
2975//
2976// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets
2977func (c *ELBV2) SetSubnetsRequest(input *SetSubnetsInput) (req *request.Request, output *SetSubnetsOutput) {
2978	op := &request.Operation{
2979		Name:       opSetSubnets,
2980		HTTPMethod: "POST",
2981		HTTPPath:   "/",
2982	}
2983
2984	if input == nil {
2985		input = &SetSubnetsInput{}
2986	}
2987
2988	output = &SetSubnetsOutput{}
2989	req = c.newRequest(op, input, output)
2990	return
2991}
2992
2993// SetSubnets API operation for Elastic Load Balancing.
2994//
2995// Enables the Availability Zone for the specified subnets for the specified
2996// Application Load Balancer. The specified subnets replace the previously enabled
2997// subnets.
2998//
2999// Note that you can't change the subnets for a Network Load Balancer.
3000//
3001// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3002// with awserr.Error's Code and Message methods to get detailed information about
3003// the error.
3004//
3005// See the AWS API reference guide for Elastic Load Balancing's
3006// API operation SetSubnets for usage and error information.
3007//
3008// Returned Error Codes:
3009//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
3010//   The specified load balancer does not exist.
3011//
3012//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
3013//   The requested configuration is not valid.
3014//
3015//   * ErrCodeSubnetNotFoundException "SubnetNotFound"
3016//   The specified subnet does not exist.
3017//
3018//   * ErrCodeInvalidSubnetException "InvalidSubnet"
3019//   The specified subnet is out of available addresses.
3020//
3021//   * ErrCodeAllocationIdNotFoundException "AllocationIdNotFound"
3022//   The specified allocation ID does not exist.
3023//
3024//   * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported"
3025//   The specified Availability Zone is not supported.
3026//
3027// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets
3028func (c *ELBV2) SetSubnets(input *SetSubnetsInput) (*SetSubnetsOutput, error) {
3029	req, out := c.SetSubnetsRequest(input)
3030	return out, req.Send()
3031}
3032
3033// SetSubnetsWithContext is the same as SetSubnets with the addition of
3034// the ability to pass a context and additional request options.
3035//
3036// See SetSubnets for details on how to use this API operation.
3037//
3038// The context must be non-nil and will be used for request cancellation. If
3039// the context is nil a panic will occur. In the future the SDK may create
3040// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3041// for more information on using Contexts.
3042func (c *ELBV2) SetSubnetsWithContext(ctx aws.Context, input *SetSubnetsInput, opts ...request.Option) (*SetSubnetsOutput, error) {
3043	req, out := c.SetSubnetsRequest(input)
3044	req.SetContext(ctx)
3045	req.ApplyOptions(opts...)
3046	return out, req.Send()
3047}
3048
3049// Information about an action.
3050// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Action
3051type Action struct {
3052	_ struct{} `type:"structure"`
3053
3054	// The Amazon Resource Name (ARN) of the target group.
3055	//
3056	// TargetGroupArn is a required field
3057	TargetGroupArn *string `type:"string" required:"true"`
3058
3059	// The type of action.
3060	//
3061	// Type is a required field
3062	Type *string `type:"string" required:"true" enum:"ActionTypeEnum"`
3063}
3064
3065// String returns the string representation
3066func (s Action) String() string {
3067	return awsutil.Prettify(s)
3068}
3069
3070// GoString returns the string representation
3071func (s Action) GoString() string {
3072	return s.String()
3073}
3074
3075// Validate inspects the fields of the type to determine if they are valid.
3076func (s *Action) Validate() error {
3077	invalidParams := request.ErrInvalidParams{Context: "Action"}
3078	if s.TargetGroupArn == nil {
3079		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
3080	}
3081	if s.Type == nil {
3082		invalidParams.Add(request.NewErrParamRequired("Type"))
3083	}
3084
3085	if invalidParams.Len() > 0 {
3086		return invalidParams
3087	}
3088	return nil
3089}
3090
3091// SetTargetGroupArn sets the TargetGroupArn field's value.
3092func (s *Action) SetTargetGroupArn(v string) *Action {
3093	s.TargetGroupArn = &v
3094	return s
3095}
3096
3097// SetType sets the Type field's value.
3098func (s *Action) SetType(v string) *Action {
3099	s.Type = &v
3100	return s
3101}
3102
3103// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTagsInput
3104type AddTagsInput struct {
3105	_ struct{} `type:"structure"`
3106
3107	// The Amazon Resource Name (ARN) of the resource.
3108	//
3109	// ResourceArns is a required field
3110	ResourceArns []*string `type:"list" required:"true"`
3111
3112	// The tags. Each resource can have a maximum of 10 tags.
3113	//
3114	// Tags is a required field
3115	Tags []*Tag `min:"1" type:"list" required:"true"`
3116}
3117
3118// String returns the string representation
3119func (s AddTagsInput) String() string {
3120	return awsutil.Prettify(s)
3121}
3122
3123// GoString returns the string representation
3124func (s AddTagsInput) GoString() string {
3125	return s.String()
3126}
3127
3128// Validate inspects the fields of the type to determine if they are valid.
3129func (s *AddTagsInput) Validate() error {
3130	invalidParams := request.ErrInvalidParams{Context: "AddTagsInput"}
3131	if s.ResourceArns == nil {
3132		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
3133	}
3134	if s.Tags == nil {
3135		invalidParams.Add(request.NewErrParamRequired("Tags"))
3136	}
3137	if s.Tags != nil && len(s.Tags) < 1 {
3138		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
3139	}
3140	if s.Tags != nil {
3141		for i, v := range s.Tags {
3142			if v == nil {
3143				continue
3144			}
3145			if err := v.Validate(); err != nil {
3146				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3147			}
3148		}
3149	}
3150
3151	if invalidParams.Len() > 0 {
3152		return invalidParams
3153	}
3154	return nil
3155}
3156
3157// SetResourceArns sets the ResourceArns field's value.
3158func (s *AddTagsInput) SetResourceArns(v []*string) *AddTagsInput {
3159	s.ResourceArns = v
3160	return s
3161}
3162
3163// SetTags sets the Tags field's value.
3164func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput {
3165	s.Tags = v
3166	return s
3167}
3168
3169// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTagsOutput
3170type AddTagsOutput struct {
3171	_ struct{} `type:"structure"`
3172}
3173
3174// String returns the string representation
3175func (s AddTagsOutput) String() string {
3176	return awsutil.Prettify(s)
3177}
3178
3179// GoString returns the string representation
3180func (s AddTagsOutput) GoString() string {
3181	return s.String()
3182}
3183
3184// Information about an Availability Zone.
3185// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AvailabilityZone
3186type AvailabilityZone struct {
3187	_ struct{} `type:"structure"`
3188
3189	// [Network Load Balancers] The static IP address.
3190	LoadBalancerAddresses []*LoadBalancerAddress `type:"list"`
3191
3192	// The ID of the subnet.
3193	SubnetId *string `type:"string"`
3194
3195	// The name of the Availability Zone.
3196	ZoneName *string `type:"string"`
3197}
3198
3199// String returns the string representation
3200func (s AvailabilityZone) String() string {
3201	return awsutil.Prettify(s)
3202}
3203
3204// GoString returns the string representation
3205func (s AvailabilityZone) GoString() string {
3206	return s.String()
3207}
3208
3209// SetLoadBalancerAddresses sets the LoadBalancerAddresses field's value.
3210func (s *AvailabilityZone) SetLoadBalancerAddresses(v []*LoadBalancerAddress) *AvailabilityZone {
3211	s.LoadBalancerAddresses = v
3212	return s
3213}
3214
3215// SetSubnetId sets the SubnetId field's value.
3216func (s *AvailabilityZone) SetSubnetId(v string) *AvailabilityZone {
3217	s.SubnetId = &v
3218	return s
3219}
3220
3221// SetZoneName sets the ZoneName field's value.
3222func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone {
3223	s.ZoneName = &v
3224	return s
3225}
3226
3227// Information about an SSL server certificate deployed on a load balancer.
3228// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Certificate
3229type Certificate struct {
3230	_ struct{} `type:"structure"`
3231
3232	// The Amazon Resource Name (ARN) of the certificate.
3233	CertificateArn *string `type:"string"`
3234}
3235
3236// String returns the string representation
3237func (s Certificate) String() string {
3238	return awsutil.Prettify(s)
3239}
3240
3241// GoString returns the string representation
3242func (s Certificate) GoString() string {
3243	return s.String()
3244}
3245
3246// SetCertificateArn sets the CertificateArn field's value.
3247func (s *Certificate) SetCertificateArn(v string) *Certificate {
3248	s.CertificateArn = &v
3249	return s
3250}
3251
3252// Information about a cipher used in a policy.
3253// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Cipher
3254type Cipher struct {
3255	_ struct{} `type:"structure"`
3256
3257	// The name of the cipher.
3258	Name *string `type:"string"`
3259
3260	// The priority of the cipher.
3261	Priority *int64 `type:"integer"`
3262}
3263
3264// String returns the string representation
3265func (s Cipher) String() string {
3266	return awsutil.Prettify(s)
3267}
3268
3269// GoString returns the string representation
3270func (s Cipher) GoString() string {
3271	return s.String()
3272}
3273
3274// SetName sets the Name field's value.
3275func (s *Cipher) SetName(v string) *Cipher {
3276	s.Name = &v
3277	return s
3278}
3279
3280// SetPriority sets the Priority field's value.
3281func (s *Cipher) SetPriority(v int64) *Cipher {
3282	s.Priority = &v
3283	return s
3284}
3285
3286// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListenerInput
3287type CreateListenerInput struct {
3288	_ struct{} `type:"structure"`
3289
3290	// [HTTPS listeners] The SSL server certificate. You must provide exactly one
3291	// certificate.
3292	Certificates []*Certificate `type:"list"`
3293
3294	// The default action for the listener. For Application Load Balancers, the
3295	// protocol of the specified target group must be HTTP or HTTPS. For Network
3296	// Load Balancers, the protocol of the specified target group must be TCP.
3297	//
3298	// DefaultActions is a required field
3299	DefaultActions []*Action `type:"list" required:"true"`
3300
3301	// The Amazon Resource Name (ARN) of the load balancer.
3302	//
3303	// LoadBalancerArn is a required field
3304	LoadBalancerArn *string `type:"string" required:"true"`
3305
3306	// The port on which the load balancer is listening.
3307	//
3308	// Port is a required field
3309	Port *int64 `min:"1" type:"integer" required:"true"`
3310
3311	// The protocol for connections from clients to the load balancer. For Application
3312	// Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load
3313	// Balancers, the supported protocol is TCP.
3314	//
3315	// Protocol is a required field
3316	Protocol *string `type:"string" required:"true" enum:"ProtocolEnum"`
3317
3318	// [HTTPS listeners] The security policy that defines which ciphers and protocols
3319	// are supported. The default is the current predefined security policy.
3320	SslPolicy *string `type:"string"`
3321}
3322
3323// String returns the string representation
3324func (s CreateListenerInput) String() string {
3325	return awsutil.Prettify(s)
3326}
3327
3328// GoString returns the string representation
3329func (s CreateListenerInput) GoString() string {
3330	return s.String()
3331}
3332
3333// Validate inspects the fields of the type to determine if they are valid.
3334func (s *CreateListenerInput) Validate() error {
3335	invalidParams := request.ErrInvalidParams{Context: "CreateListenerInput"}
3336	if s.DefaultActions == nil {
3337		invalidParams.Add(request.NewErrParamRequired("DefaultActions"))
3338	}
3339	if s.LoadBalancerArn == nil {
3340		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
3341	}
3342	if s.Port == nil {
3343		invalidParams.Add(request.NewErrParamRequired("Port"))
3344	}
3345	if s.Port != nil && *s.Port < 1 {
3346		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
3347	}
3348	if s.Protocol == nil {
3349		invalidParams.Add(request.NewErrParamRequired("Protocol"))
3350	}
3351	if s.DefaultActions != nil {
3352		for i, v := range s.DefaultActions {
3353			if v == nil {
3354				continue
3355			}
3356			if err := v.Validate(); err != nil {
3357				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultActions", i), err.(request.ErrInvalidParams))
3358			}
3359		}
3360	}
3361
3362	if invalidParams.Len() > 0 {
3363		return invalidParams
3364	}
3365	return nil
3366}
3367
3368// SetCertificates sets the Certificates field's value.
3369func (s *CreateListenerInput) SetCertificates(v []*Certificate) *CreateListenerInput {
3370	s.Certificates = v
3371	return s
3372}
3373
3374// SetDefaultActions sets the DefaultActions field's value.
3375func (s *CreateListenerInput) SetDefaultActions(v []*Action) *CreateListenerInput {
3376	s.DefaultActions = v
3377	return s
3378}
3379
3380// SetLoadBalancerArn sets the LoadBalancerArn field's value.
3381func (s *CreateListenerInput) SetLoadBalancerArn(v string) *CreateListenerInput {
3382	s.LoadBalancerArn = &v
3383	return s
3384}
3385
3386// SetPort sets the Port field's value.
3387func (s *CreateListenerInput) SetPort(v int64) *CreateListenerInput {
3388	s.Port = &v
3389	return s
3390}
3391
3392// SetProtocol sets the Protocol field's value.
3393func (s *CreateListenerInput) SetProtocol(v string) *CreateListenerInput {
3394	s.Protocol = &v
3395	return s
3396}
3397
3398// SetSslPolicy sets the SslPolicy field's value.
3399func (s *CreateListenerInput) SetSslPolicy(v string) *CreateListenerInput {
3400	s.SslPolicy = &v
3401	return s
3402}
3403
3404// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListenerOutput
3405type CreateListenerOutput struct {
3406	_ struct{} `type:"structure"`
3407
3408	// Information about the listener.
3409	Listeners []*Listener `type:"list"`
3410}
3411
3412// String returns the string representation
3413func (s CreateListenerOutput) String() string {
3414	return awsutil.Prettify(s)
3415}
3416
3417// GoString returns the string representation
3418func (s CreateListenerOutput) GoString() string {
3419	return s.String()
3420}
3421
3422// SetListeners sets the Listeners field's value.
3423func (s *CreateListenerOutput) SetListeners(v []*Listener) *CreateListenerOutput {
3424	s.Listeners = v
3425	return s
3426}
3427
3428// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancerInput
3429type CreateLoadBalancerInput struct {
3430	_ struct{} `type:"structure"`
3431
3432	// [Application Load Balancers] The type of IP addresses used by the subnets
3433	// for your load balancer. The possible values are ipv4 (for IPv4 addresses)
3434	// and dualstack (for IPv4 and IPv6 addresses). Internal load balancers must
3435	// use ipv4.
3436	IpAddressType *string `type:"string" enum:"IpAddressType"`
3437
3438	// The name of the load balancer.
3439	//
3440	// This name must be unique per region per account, can have a maximum of 32
3441	// characters, must contain only alphanumeric characters or hyphens, and must
3442	// not begin or end with a hyphen.
3443	//
3444	// Name is a required field
3445	Name *string `type:"string" required:"true"`
3446
3447	// The nodes of an Internet-facing load balancer have public IP addresses. The
3448	// DNS name of an Internet-facing load balancer is publicly resolvable to the
3449	// public IP addresses of the nodes. Therefore, Internet-facing load balancers
3450	// can route requests from clients over the Internet.
3451	//
3452	// The nodes of an internal load balancer have only private IP addresses. The
3453	// DNS name of an internal load balancer is publicly resolvable to the private
3454	// IP addresses of the nodes. Therefore, internal load balancers can only route
3455	// requests from clients with access to the VPC for the load balancer.
3456	//
3457	// The default is an Internet-facing load balancer.
3458	Scheme *string `type:"string" enum:"LoadBalancerSchemeEnum"`
3459
3460	// [Application Load Balancers] The IDs of the security groups to assign to
3461	// the load balancer.
3462	SecurityGroups []*string `type:"list"`
3463
3464	// The IDs of the subnets to attach to the load balancer. You can specify only
3465	// one subnet per Availability Zone. You must specify either subnets or subnet
3466	// mappings.
3467	//
3468	// [Network Load Balancers] You can specify one Elastic IP address per subnet.
3469	//
3470	// [Application Load Balancers] You cannot specify Elastic IP addresses for
3471	// your subnets.
3472	SubnetMappings []*SubnetMapping `type:"list"`
3473
3474	// The IDs of the subnets to attach to the load balancer. You can specify only
3475	// one subnet per Availability Zone. You must specify either subnets or subnet
3476	// mappings.
3477	//
3478	// [Application Load Balancers] You must specify subnets from at least two Availability
3479	// Zones.
3480	Subnets []*string `type:"list"`
3481
3482	// One or more tags to assign to the load balancer.
3483	Tags []*Tag `min:"1" type:"list"`
3484
3485	// The type of load balancer to create. The default is application.
3486	Type *string `type:"string" enum:"LoadBalancerTypeEnum"`
3487}
3488
3489// String returns the string representation
3490func (s CreateLoadBalancerInput) String() string {
3491	return awsutil.Prettify(s)
3492}
3493
3494// GoString returns the string representation
3495func (s CreateLoadBalancerInput) GoString() string {
3496	return s.String()
3497}
3498
3499// Validate inspects the fields of the type to determine if they are valid.
3500func (s *CreateLoadBalancerInput) Validate() error {
3501	invalidParams := request.ErrInvalidParams{Context: "CreateLoadBalancerInput"}
3502	if s.Name == nil {
3503		invalidParams.Add(request.NewErrParamRequired("Name"))
3504	}
3505	if s.Tags != nil && len(s.Tags) < 1 {
3506		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
3507	}
3508	if s.Tags != nil {
3509		for i, v := range s.Tags {
3510			if v == nil {
3511				continue
3512			}
3513			if err := v.Validate(); err != nil {
3514				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3515			}
3516		}
3517	}
3518
3519	if invalidParams.Len() > 0 {
3520		return invalidParams
3521	}
3522	return nil
3523}
3524
3525// SetIpAddressType sets the IpAddressType field's value.
3526func (s *CreateLoadBalancerInput) SetIpAddressType(v string) *CreateLoadBalancerInput {
3527	s.IpAddressType = &v
3528	return s
3529}
3530
3531// SetName sets the Name field's value.
3532func (s *CreateLoadBalancerInput) SetName(v string) *CreateLoadBalancerInput {
3533	s.Name = &v
3534	return s
3535}
3536
3537// SetScheme sets the Scheme field's value.
3538func (s *CreateLoadBalancerInput) SetScheme(v string) *CreateLoadBalancerInput {
3539	s.Scheme = &v
3540	return s
3541}
3542
3543// SetSecurityGroups sets the SecurityGroups field's value.
3544func (s *CreateLoadBalancerInput) SetSecurityGroups(v []*string) *CreateLoadBalancerInput {
3545	s.SecurityGroups = v
3546	return s
3547}
3548
3549// SetSubnetMappings sets the SubnetMappings field's value.
3550func (s *CreateLoadBalancerInput) SetSubnetMappings(v []*SubnetMapping) *CreateLoadBalancerInput {
3551	s.SubnetMappings = v
3552	return s
3553}
3554
3555// SetSubnets sets the Subnets field's value.
3556func (s *CreateLoadBalancerInput) SetSubnets(v []*string) *CreateLoadBalancerInput {
3557	s.Subnets = v
3558	return s
3559}
3560
3561// SetTags sets the Tags field's value.
3562func (s *CreateLoadBalancerInput) SetTags(v []*Tag) *CreateLoadBalancerInput {
3563	s.Tags = v
3564	return s
3565}
3566
3567// SetType sets the Type field's value.
3568func (s *CreateLoadBalancerInput) SetType(v string) *CreateLoadBalancerInput {
3569	s.Type = &v
3570	return s
3571}
3572
3573// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancerOutput
3574type CreateLoadBalancerOutput struct {
3575	_ struct{} `type:"structure"`
3576
3577	// Information about the load balancer.
3578	LoadBalancers []*LoadBalancer `type:"list"`
3579}
3580
3581// String returns the string representation
3582func (s CreateLoadBalancerOutput) String() string {
3583	return awsutil.Prettify(s)
3584}
3585
3586// GoString returns the string representation
3587func (s CreateLoadBalancerOutput) GoString() string {
3588	return s.String()
3589}
3590
3591// SetLoadBalancers sets the LoadBalancers field's value.
3592func (s *CreateLoadBalancerOutput) SetLoadBalancers(v []*LoadBalancer) *CreateLoadBalancerOutput {
3593	s.LoadBalancers = v
3594	return s
3595}
3596
3597// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRuleInput
3598type CreateRuleInput struct {
3599	_ struct{} `type:"structure"`
3600
3601	// An action. Each action has the type forward and specifies a target group.
3602	//
3603	// Actions is a required field
3604	Actions []*Action `type:"list" required:"true"`
3605
3606	// The conditions. Each condition specifies a field name and a single value.
3607	//
3608	// If the field name is host-header, you can specify a single host name (for
3609	// example, my.example.com). A host name is case insensitive, can be up to 128
3610	// characters in length, and can contain any of the following characters. Note
3611	// that you can include up to three wildcard characters.
3612	//
3613	//    * A-Z, a-z, 0-9
3614	//
3615	//    * - .
3616	//
3617	//    * * (matches 0 or more characters)
3618	//
3619	//    * ? (matches exactly 1 character)
3620	//
3621	// If the field name is path-pattern, you can specify a single path pattern.
3622	// A path pattern is case sensitive, can be up to 128 characters in length,
3623	// and can contain any of the following characters. Note that you can include
3624	// up to three wildcard characters.
3625	//
3626	//    * A-Z, a-z, 0-9
3627	//
3628	//    * _ - . $ / ~ " ' @ : +
3629	//
3630	//    * & (using &)
3631	//
3632	//    * * (matches 0 or more characters)
3633	//
3634	//    * ? (matches exactly 1 character)
3635	//
3636	// Conditions is a required field
3637	Conditions []*RuleCondition `type:"list" required:"true"`
3638
3639	// The Amazon Resource Name (ARN) of the listener.
3640	//
3641	// ListenerArn is a required field
3642	ListenerArn *string `type:"string" required:"true"`
3643
3644	// The priority for the rule. A listener can't have multiple rules with the
3645	// same priority.
3646	//
3647	// Priority is a required field
3648	Priority *int64 `min:"1" type:"integer" required:"true"`
3649}
3650
3651// String returns the string representation
3652func (s CreateRuleInput) String() string {
3653	return awsutil.Prettify(s)
3654}
3655
3656// GoString returns the string representation
3657func (s CreateRuleInput) GoString() string {
3658	return s.String()
3659}
3660
3661// Validate inspects the fields of the type to determine if they are valid.
3662func (s *CreateRuleInput) Validate() error {
3663	invalidParams := request.ErrInvalidParams{Context: "CreateRuleInput"}
3664	if s.Actions == nil {
3665		invalidParams.Add(request.NewErrParamRequired("Actions"))
3666	}
3667	if s.Conditions == nil {
3668		invalidParams.Add(request.NewErrParamRequired("Conditions"))
3669	}
3670	if s.ListenerArn == nil {
3671		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
3672	}
3673	if s.Priority == nil {
3674		invalidParams.Add(request.NewErrParamRequired("Priority"))
3675	}
3676	if s.Priority != nil && *s.Priority < 1 {
3677		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
3678	}
3679	if s.Actions != nil {
3680		for i, v := range s.Actions {
3681			if v == nil {
3682				continue
3683			}
3684			if err := v.Validate(); err != nil {
3685				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
3686			}
3687		}
3688	}
3689
3690	if invalidParams.Len() > 0 {
3691		return invalidParams
3692	}
3693	return nil
3694}
3695
3696// SetActions sets the Actions field's value.
3697func (s *CreateRuleInput) SetActions(v []*Action) *CreateRuleInput {
3698	s.Actions = v
3699	return s
3700}
3701
3702// SetConditions sets the Conditions field's value.
3703func (s *CreateRuleInput) SetConditions(v []*RuleCondition) *CreateRuleInput {
3704	s.Conditions = v
3705	return s
3706}
3707
3708// SetListenerArn sets the ListenerArn field's value.
3709func (s *CreateRuleInput) SetListenerArn(v string) *CreateRuleInput {
3710	s.ListenerArn = &v
3711	return s
3712}
3713
3714// SetPriority sets the Priority field's value.
3715func (s *CreateRuleInput) SetPriority(v int64) *CreateRuleInput {
3716	s.Priority = &v
3717	return s
3718}
3719
3720// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRuleOutput
3721type CreateRuleOutput struct {
3722	_ struct{} `type:"structure"`
3723
3724	// Information about the rule.
3725	Rules []*Rule `type:"list"`
3726}
3727
3728// String returns the string representation
3729func (s CreateRuleOutput) String() string {
3730	return awsutil.Prettify(s)
3731}
3732
3733// GoString returns the string representation
3734func (s CreateRuleOutput) GoString() string {
3735	return s.String()
3736}
3737
3738// SetRules sets the Rules field's value.
3739func (s *CreateRuleOutput) SetRules(v []*Rule) *CreateRuleOutput {
3740	s.Rules = v
3741	return s
3742}
3743
3744// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroupInput
3745type CreateTargetGroupInput struct {
3746	_ struct{} `type:"structure"`
3747
3748	// The approximate amount of time, in seconds, between health checks of an individual
3749	// target. For Application Load Balancers, the range is 5 to 300 seconds. For
3750	// Network Load Balancers, the supported values are 10 or 30 seconds. The default
3751	// is 30 seconds.
3752	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
3753
3754	// [HTTP/HTTPS health checks] The ping path that is the destination on the targets
3755	// for health checks. The default is /.
3756	HealthCheckPath *string `min:"1" type:"string"`
3757
3758	// The port the load balancer uses when performing health checks on targets.
3759	// The default is traffic-port, which is the port on which each target receives
3760	// traffic from the load balancer.
3761	HealthCheckPort *string `type:"string"`
3762
3763	// The protocol the load balancer uses when performing health checks on targets.
3764	// The TCP protocol is supported only if the protocol of the target group is
3765	// TCP. For Application Load Balancers, the default is HTTP. For Network Load
3766	// Balancers, the default is TCP.
3767	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
3768
3769	// The amount of time, in seconds, during which no response from a target means
3770	// a failed health check. For Application Load Balancers, the range is 2 to
3771	// 60 seconds and the default is 5 seconds. For Network Load Balancers, this
3772	// is 10 seconds for TCP and HTTPS health checks and 6 seconds for HTTP health
3773	// checks.
3774	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
3775
3776	// The number of consecutive health checks successes required before considering
3777	// an unhealthy target healthy. For Application Load Balancers, the default
3778	// is 5. For Network Load Balancers, the default is 3.
3779	HealthyThresholdCount *int64 `min:"2" type:"integer"`
3780
3781	// [HTTP/HTTPS health checks] The HTTP codes to use when checking for a successful
3782	// response from a target.
3783	Matcher *Matcher `type:"structure"`
3784
3785	// The name of the target group.
3786	//
3787	// This name must be unique per region per account, can have a maximum of 32
3788	// characters, must contain only alphanumeric characters or hyphens, and must
3789	// not begin or end with a hyphen.
3790	//
3791	// Name is a required field
3792	Name *string `type:"string" required:"true"`
3793
3794	// The port on which the targets receive traffic. This port is used unless you
3795	// specify a port override when registering the target.
3796	//
3797	// Port is a required field
3798	Port *int64 `min:"1" type:"integer" required:"true"`
3799
3800	// The protocol to use for routing traffic to the targets. For Application Load
3801	// Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers,
3802	// the supported protocol is TCP.
3803	//
3804	// Protocol is a required field
3805	Protocol *string `type:"string" required:"true" enum:"ProtocolEnum"`
3806
3807	// The type of target that you must specify when registering targets with this
3808	// target group. The possible values are instance (targets are specified by
3809	// instance ID) or ip (targets are specified by IP address). The default is
3810	// instance. Note that you can't specify targets for a target group using both
3811	// instance IDs and IP addresses.
3812	//
3813	// If the target type is ip, specify IP addresses from the subnets of the virtual
3814	// private cloud (VPC) for the target group, the RFC 1918 range (10.0.0.0/8,
3815	// 172.16.0.0/12, and 192.168.0.0/16), and the RFC 6598 range (100.64.0.0/10).
3816	// You can't specify publicly routable IP addresses.
3817	TargetType *string `type:"string" enum:"TargetTypeEnum"`
3818
3819	// The number of consecutive health check failures required before considering
3820	// a target unhealthy. For Application Load Balancers, the default is 2. For
3821	// Network Load Balancers, this value must be the same as the healthy threshold
3822	// count.
3823	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
3824
3825	// The identifier of the virtual private cloud (VPC).
3826	//
3827	// VpcId is a required field
3828	VpcId *string `type:"string" required:"true"`
3829}
3830
3831// String returns the string representation
3832func (s CreateTargetGroupInput) String() string {
3833	return awsutil.Prettify(s)
3834}
3835
3836// GoString returns the string representation
3837func (s CreateTargetGroupInput) GoString() string {
3838	return s.String()
3839}
3840
3841// Validate inspects the fields of the type to determine if they are valid.
3842func (s *CreateTargetGroupInput) Validate() error {
3843	invalidParams := request.ErrInvalidParams{Context: "CreateTargetGroupInput"}
3844	if s.HealthCheckIntervalSeconds != nil && *s.HealthCheckIntervalSeconds < 5 {
3845		invalidParams.Add(request.NewErrParamMinValue("HealthCheckIntervalSeconds", 5))
3846	}
3847	if s.HealthCheckPath != nil && len(*s.HealthCheckPath) < 1 {
3848		invalidParams.Add(request.NewErrParamMinLen("HealthCheckPath", 1))
3849	}
3850	if s.HealthCheckTimeoutSeconds != nil && *s.HealthCheckTimeoutSeconds < 2 {
3851		invalidParams.Add(request.NewErrParamMinValue("HealthCheckTimeoutSeconds", 2))
3852	}
3853	if s.HealthyThresholdCount != nil && *s.HealthyThresholdCount < 2 {
3854		invalidParams.Add(request.NewErrParamMinValue("HealthyThresholdCount", 2))
3855	}
3856	if s.Name == nil {
3857		invalidParams.Add(request.NewErrParamRequired("Name"))
3858	}
3859	if s.Port == nil {
3860		invalidParams.Add(request.NewErrParamRequired("Port"))
3861	}
3862	if s.Port != nil && *s.Port < 1 {
3863		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
3864	}
3865	if s.Protocol == nil {
3866		invalidParams.Add(request.NewErrParamRequired("Protocol"))
3867	}
3868	if s.UnhealthyThresholdCount != nil && *s.UnhealthyThresholdCount < 2 {
3869		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThresholdCount", 2))
3870	}
3871	if s.VpcId == nil {
3872		invalidParams.Add(request.NewErrParamRequired("VpcId"))
3873	}
3874	if s.Matcher != nil {
3875		if err := s.Matcher.Validate(); err != nil {
3876			invalidParams.AddNested("Matcher", err.(request.ErrInvalidParams))
3877		}
3878	}
3879
3880	if invalidParams.Len() > 0 {
3881		return invalidParams
3882	}
3883	return nil
3884}
3885
3886// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
3887func (s *CreateTargetGroupInput) SetHealthCheckIntervalSeconds(v int64) *CreateTargetGroupInput {
3888	s.HealthCheckIntervalSeconds = &v
3889	return s
3890}
3891
3892// SetHealthCheckPath sets the HealthCheckPath field's value.
3893func (s *CreateTargetGroupInput) SetHealthCheckPath(v string) *CreateTargetGroupInput {
3894	s.HealthCheckPath = &v
3895	return s
3896}
3897
3898// SetHealthCheckPort sets the HealthCheckPort field's value.
3899func (s *CreateTargetGroupInput) SetHealthCheckPort(v string) *CreateTargetGroupInput {
3900	s.HealthCheckPort = &v
3901	return s
3902}
3903
3904// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
3905func (s *CreateTargetGroupInput) SetHealthCheckProtocol(v string) *CreateTargetGroupInput {
3906	s.HealthCheckProtocol = &v
3907	return s
3908}
3909
3910// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
3911func (s *CreateTargetGroupInput) SetHealthCheckTimeoutSeconds(v int64) *CreateTargetGroupInput {
3912	s.HealthCheckTimeoutSeconds = &v
3913	return s
3914}
3915
3916// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
3917func (s *CreateTargetGroupInput) SetHealthyThresholdCount(v int64) *CreateTargetGroupInput {
3918	s.HealthyThresholdCount = &v
3919	return s
3920}
3921
3922// SetMatcher sets the Matcher field's value.
3923func (s *CreateTargetGroupInput) SetMatcher(v *Matcher) *CreateTargetGroupInput {
3924	s.Matcher = v
3925	return s
3926}
3927
3928// SetName sets the Name field's value.
3929func (s *CreateTargetGroupInput) SetName(v string) *CreateTargetGroupInput {
3930	s.Name = &v
3931	return s
3932}
3933
3934// SetPort sets the Port field's value.
3935func (s *CreateTargetGroupInput) SetPort(v int64) *CreateTargetGroupInput {
3936	s.Port = &v
3937	return s
3938}
3939
3940// SetProtocol sets the Protocol field's value.
3941func (s *CreateTargetGroupInput) SetProtocol(v string) *CreateTargetGroupInput {
3942	s.Protocol = &v
3943	return s
3944}
3945
3946// SetTargetType sets the TargetType field's value.
3947func (s *CreateTargetGroupInput) SetTargetType(v string) *CreateTargetGroupInput {
3948	s.TargetType = &v
3949	return s
3950}
3951
3952// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
3953func (s *CreateTargetGroupInput) SetUnhealthyThresholdCount(v int64) *CreateTargetGroupInput {
3954	s.UnhealthyThresholdCount = &v
3955	return s
3956}
3957
3958// SetVpcId sets the VpcId field's value.
3959func (s *CreateTargetGroupInput) SetVpcId(v string) *CreateTargetGroupInput {
3960	s.VpcId = &v
3961	return s
3962}
3963
3964// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroupOutput
3965type CreateTargetGroupOutput struct {
3966	_ struct{} `type:"structure"`
3967
3968	// Information about the target group.
3969	TargetGroups []*TargetGroup `type:"list"`
3970}
3971
3972// String returns the string representation
3973func (s CreateTargetGroupOutput) String() string {
3974	return awsutil.Prettify(s)
3975}
3976
3977// GoString returns the string representation
3978func (s CreateTargetGroupOutput) GoString() string {
3979	return s.String()
3980}
3981
3982// SetTargetGroups sets the TargetGroups field's value.
3983func (s *CreateTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *CreateTargetGroupOutput {
3984	s.TargetGroups = v
3985	return s
3986}
3987
3988// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListenerInput
3989type DeleteListenerInput struct {
3990	_ struct{} `type:"structure"`
3991
3992	// The Amazon Resource Name (ARN) of the listener.
3993	//
3994	// ListenerArn is a required field
3995	ListenerArn *string `type:"string" required:"true"`
3996}
3997
3998// String returns the string representation
3999func (s DeleteListenerInput) String() string {
4000	return awsutil.Prettify(s)
4001}
4002
4003// GoString returns the string representation
4004func (s DeleteListenerInput) GoString() string {
4005	return s.String()
4006}
4007
4008// Validate inspects the fields of the type to determine if they are valid.
4009func (s *DeleteListenerInput) Validate() error {
4010	invalidParams := request.ErrInvalidParams{Context: "DeleteListenerInput"}
4011	if s.ListenerArn == nil {
4012		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
4013	}
4014
4015	if invalidParams.Len() > 0 {
4016		return invalidParams
4017	}
4018	return nil
4019}
4020
4021// SetListenerArn sets the ListenerArn field's value.
4022func (s *DeleteListenerInput) SetListenerArn(v string) *DeleteListenerInput {
4023	s.ListenerArn = &v
4024	return s
4025}
4026
4027// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListenerOutput
4028type DeleteListenerOutput struct {
4029	_ struct{} `type:"structure"`
4030}
4031
4032// String returns the string representation
4033func (s DeleteListenerOutput) String() string {
4034	return awsutil.Prettify(s)
4035}
4036
4037// GoString returns the string representation
4038func (s DeleteListenerOutput) GoString() string {
4039	return s.String()
4040}
4041
4042// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancerInput
4043type DeleteLoadBalancerInput struct {
4044	_ struct{} `type:"structure"`
4045
4046	// The Amazon Resource Name (ARN) of the load balancer.
4047	//
4048	// LoadBalancerArn is a required field
4049	LoadBalancerArn *string `type:"string" required:"true"`
4050}
4051
4052// String returns the string representation
4053func (s DeleteLoadBalancerInput) String() string {
4054	return awsutil.Prettify(s)
4055}
4056
4057// GoString returns the string representation
4058func (s DeleteLoadBalancerInput) GoString() string {
4059	return s.String()
4060}
4061
4062// Validate inspects the fields of the type to determine if they are valid.
4063func (s *DeleteLoadBalancerInput) Validate() error {
4064	invalidParams := request.ErrInvalidParams{Context: "DeleteLoadBalancerInput"}
4065	if s.LoadBalancerArn == nil {
4066		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
4067	}
4068
4069	if invalidParams.Len() > 0 {
4070		return invalidParams
4071	}
4072	return nil
4073}
4074
4075// SetLoadBalancerArn sets the LoadBalancerArn field's value.
4076func (s *DeleteLoadBalancerInput) SetLoadBalancerArn(v string) *DeleteLoadBalancerInput {
4077	s.LoadBalancerArn = &v
4078	return s
4079}
4080
4081// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancerOutput
4082type DeleteLoadBalancerOutput struct {
4083	_ struct{} `type:"structure"`
4084}
4085
4086// String returns the string representation
4087func (s DeleteLoadBalancerOutput) String() string {
4088	return awsutil.Prettify(s)
4089}
4090
4091// GoString returns the string representation
4092func (s DeleteLoadBalancerOutput) GoString() string {
4093	return s.String()
4094}
4095
4096// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRuleInput
4097type DeleteRuleInput struct {
4098	_ struct{} `type:"structure"`
4099
4100	// The Amazon Resource Name (ARN) of the rule.
4101	//
4102	// RuleArn is a required field
4103	RuleArn *string `type:"string" required:"true"`
4104}
4105
4106// String returns the string representation
4107func (s DeleteRuleInput) String() string {
4108	return awsutil.Prettify(s)
4109}
4110
4111// GoString returns the string representation
4112func (s DeleteRuleInput) GoString() string {
4113	return s.String()
4114}
4115
4116// Validate inspects the fields of the type to determine if they are valid.
4117func (s *DeleteRuleInput) Validate() error {
4118	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleInput"}
4119	if s.RuleArn == nil {
4120		invalidParams.Add(request.NewErrParamRequired("RuleArn"))
4121	}
4122
4123	if invalidParams.Len() > 0 {
4124		return invalidParams
4125	}
4126	return nil
4127}
4128
4129// SetRuleArn sets the RuleArn field's value.
4130func (s *DeleteRuleInput) SetRuleArn(v string) *DeleteRuleInput {
4131	s.RuleArn = &v
4132	return s
4133}
4134
4135// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRuleOutput
4136type DeleteRuleOutput struct {
4137	_ struct{} `type:"structure"`
4138}
4139
4140// String returns the string representation
4141func (s DeleteRuleOutput) String() string {
4142	return awsutil.Prettify(s)
4143}
4144
4145// GoString returns the string representation
4146func (s DeleteRuleOutput) GoString() string {
4147	return s.String()
4148}
4149
4150// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroupInput
4151type DeleteTargetGroupInput struct {
4152	_ struct{} `type:"structure"`
4153
4154	// The Amazon Resource Name (ARN) of the target group.
4155	//
4156	// TargetGroupArn is a required field
4157	TargetGroupArn *string `type:"string" required:"true"`
4158}
4159
4160// String returns the string representation
4161func (s DeleteTargetGroupInput) String() string {
4162	return awsutil.Prettify(s)
4163}
4164
4165// GoString returns the string representation
4166func (s DeleteTargetGroupInput) GoString() string {
4167	return s.String()
4168}
4169
4170// Validate inspects the fields of the type to determine if they are valid.
4171func (s *DeleteTargetGroupInput) Validate() error {
4172	invalidParams := request.ErrInvalidParams{Context: "DeleteTargetGroupInput"}
4173	if s.TargetGroupArn == nil {
4174		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
4175	}
4176
4177	if invalidParams.Len() > 0 {
4178		return invalidParams
4179	}
4180	return nil
4181}
4182
4183// SetTargetGroupArn sets the TargetGroupArn field's value.
4184func (s *DeleteTargetGroupInput) SetTargetGroupArn(v string) *DeleteTargetGroupInput {
4185	s.TargetGroupArn = &v
4186	return s
4187}
4188
4189// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroupOutput
4190type DeleteTargetGroupOutput struct {
4191	_ struct{} `type:"structure"`
4192}
4193
4194// String returns the string representation
4195func (s DeleteTargetGroupOutput) String() string {
4196	return awsutil.Prettify(s)
4197}
4198
4199// GoString returns the string representation
4200func (s DeleteTargetGroupOutput) GoString() string {
4201	return s.String()
4202}
4203
4204// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargetsInput
4205type DeregisterTargetsInput struct {
4206	_ struct{} `type:"structure"`
4207
4208	// The Amazon Resource Name (ARN) of the target group.
4209	//
4210	// TargetGroupArn is a required field
4211	TargetGroupArn *string `type:"string" required:"true"`
4212
4213	// The targets. If you specified a port override when you registered a target,
4214	// you must specify both the target ID and the port when you deregister it.
4215	//
4216	// Targets is a required field
4217	Targets []*TargetDescription `type:"list" required:"true"`
4218}
4219
4220// String returns the string representation
4221func (s DeregisterTargetsInput) String() string {
4222	return awsutil.Prettify(s)
4223}
4224
4225// GoString returns the string representation
4226func (s DeregisterTargetsInput) GoString() string {
4227	return s.String()
4228}
4229
4230// Validate inspects the fields of the type to determine if they are valid.
4231func (s *DeregisterTargetsInput) Validate() error {
4232	invalidParams := request.ErrInvalidParams{Context: "DeregisterTargetsInput"}
4233	if s.TargetGroupArn == nil {
4234		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
4235	}
4236	if s.Targets == nil {
4237		invalidParams.Add(request.NewErrParamRequired("Targets"))
4238	}
4239	if s.Targets != nil {
4240		for i, v := range s.Targets {
4241			if v == nil {
4242				continue
4243			}
4244			if err := v.Validate(); err != nil {
4245				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
4246			}
4247		}
4248	}
4249
4250	if invalidParams.Len() > 0 {
4251		return invalidParams
4252	}
4253	return nil
4254}
4255
4256// SetTargetGroupArn sets the TargetGroupArn field's value.
4257func (s *DeregisterTargetsInput) SetTargetGroupArn(v string) *DeregisterTargetsInput {
4258	s.TargetGroupArn = &v
4259	return s
4260}
4261
4262// SetTargets sets the Targets field's value.
4263func (s *DeregisterTargetsInput) SetTargets(v []*TargetDescription) *DeregisterTargetsInput {
4264	s.Targets = v
4265	return s
4266}
4267
4268// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargetsOutput
4269type DeregisterTargetsOutput struct {
4270	_ struct{} `type:"structure"`
4271}
4272
4273// String returns the string representation
4274func (s DeregisterTargetsOutput) String() string {
4275	return awsutil.Prettify(s)
4276}
4277
4278// GoString returns the string representation
4279func (s DeregisterTargetsOutput) GoString() string {
4280	return s.String()
4281}
4282
4283// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimitsInput
4284type DescribeAccountLimitsInput struct {
4285	_ struct{} `type:"structure"`
4286
4287	// The marker for the next set of results. (You received this marker from a
4288	// previous call.)
4289	Marker *string `type:"string"`
4290
4291	// The maximum number of results to return with this call.
4292	PageSize *int64 `min:"1" type:"integer"`
4293}
4294
4295// String returns the string representation
4296func (s DescribeAccountLimitsInput) String() string {
4297	return awsutil.Prettify(s)
4298}
4299
4300// GoString returns the string representation
4301func (s DescribeAccountLimitsInput) GoString() string {
4302	return s.String()
4303}
4304
4305// Validate inspects the fields of the type to determine if they are valid.
4306func (s *DescribeAccountLimitsInput) Validate() error {
4307	invalidParams := request.ErrInvalidParams{Context: "DescribeAccountLimitsInput"}
4308	if s.PageSize != nil && *s.PageSize < 1 {
4309		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4310	}
4311
4312	if invalidParams.Len() > 0 {
4313		return invalidParams
4314	}
4315	return nil
4316}
4317
4318// SetMarker sets the Marker field's value.
4319func (s *DescribeAccountLimitsInput) SetMarker(v string) *DescribeAccountLimitsInput {
4320	s.Marker = &v
4321	return s
4322}
4323
4324// SetPageSize sets the PageSize field's value.
4325func (s *DescribeAccountLimitsInput) SetPageSize(v int64) *DescribeAccountLimitsInput {
4326	s.PageSize = &v
4327	return s
4328}
4329
4330// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimitsOutput
4331type DescribeAccountLimitsOutput struct {
4332	_ struct{} `type:"structure"`
4333
4334	// Information about the limits.
4335	Limits []*Limit `type:"list"`
4336
4337	// The marker to use when requesting the next set of results. If there are no
4338	// additional results, the string is empty.
4339	NextMarker *string `type:"string"`
4340}
4341
4342// String returns the string representation
4343func (s DescribeAccountLimitsOutput) String() string {
4344	return awsutil.Prettify(s)
4345}
4346
4347// GoString returns the string representation
4348func (s DescribeAccountLimitsOutput) GoString() string {
4349	return s.String()
4350}
4351
4352// SetLimits sets the Limits field's value.
4353func (s *DescribeAccountLimitsOutput) SetLimits(v []*Limit) *DescribeAccountLimitsOutput {
4354	s.Limits = v
4355	return s
4356}
4357
4358// SetNextMarker sets the NextMarker field's value.
4359func (s *DescribeAccountLimitsOutput) SetNextMarker(v string) *DescribeAccountLimitsOutput {
4360	s.NextMarker = &v
4361	return s
4362}
4363
4364// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenersInput
4365type DescribeListenersInput struct {
4366	_ struct{} `type:"structure"`
4367
4368	// The Amazon Resource Names (ARN) of the listeners.
4369	ListenerArns []*string `type:"list"`
4370
4371	// The Amazon Resource Name (ARN) of the load balancer.
4372	LoadBalancerArn *string `type:"string"`
4373
4374	// The marker for the next set of results. (You received this marker from a
4375	// previous call.)
4376	Marker *string `type:"string"`
4377
4378	// The maximum number of results to return with this call.
4379	PageSize *int64 `min:"1" type:"integer"`
4380}
4381
4382// String returns the string representation
4383func (s DescribeListenersInput) String() string {
4384	return awsutil.Prettify(s)
4385}
4386
4387// GoString returns the string representation
4388func (s DescribeListenersInput) GoString() string {
4389	return s.String()
4390}
4391
4392// Validate inspects the fields of the type to determine if they are valid.
4393func (s *DescribeListenersInput) Validate() error {
4394	invalidParams := request.ErrInvalidParams{Context: "DescribeListenersInput"}
4395	if s.PageSize != nil && *s.PageSize < 1 {
4396		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4397	}
4398
4399	if invalidParams.Len() > 0 {
4400		return invalidParams
4401	}
4402	return nil
4403}
4404
4405// SetListenerArns sets the ListenerArns field's value.
4406func (s *DescribeListenersInput) SetListenerArns(v []*string) *DescribeListenersInput {
4407	s.ListenerArns = v
4408	return s
4409}
4410
4411// SetLoadBalancerArn sets the LoadBalancerArn field's value.
4412func (s *DescribeListenersInput) SetLoadBalancerArn(v string) *DescribeListenersInput {
4413	s.LoadBalancerArn = &v
4414	return s
4415}
4416
4417// SetMarker sets the Marker field's value.
4418func (s *DescribeListenersInput) SetMarker(v string) *DescribeListenersInput {
4419	s.Marker = &v
4420	return s
4421}
4422
4423// SetPageSize sets the PageSize field's value.
4424func (s *DescribeListenersInput) SetPageSize(v int64) *DescribeListenersInput {
4425	s.PageSize = &v
4426	return s
4427}
4428
4429// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenersOutput
4430type DescribeListenersOutput struct {
4431	_ struct{} `type:"structure"`
4432
4433	// Information about the listeners.
4434	Listeners []*Listener `type:"list"`
4435
4436	// The marker to use when requesting the next set of results. If there are no
4437	// additional results, the string is empty.
4438	NextMarker *string `type:"string"`
4439}
4440
4441// String returns the string representation
4442func (s DescribeListenersOutput) String() string {
4443	return awsutil.Prettify(s)
4444}
4445
4446// GoString returns the string representation
4447func (s DescribeListenersOutput) GoString() string {
4448	return s.String()
4449}
4450
4451// SetListeners sets the Listeners field's value.
4452func (s *DescribeListenersOutput) SetListeners(v []*Listener) *DescribeListenersOutput {
4453	s.Listeners = v
4454	return s
4455}
4456
4457// SetNextMarker sets the NextMarker field's value.
4458func (s *DescribeListenersOutput) SetNextMarker(v string) *DescribeListenersOutput {
4459	s.NextMarker = &v
4460	return s
4461}
4462
4463// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributesInput
4464type DescribeLoadBalancerAttributesInput struct {
4465	_ struct{} `type:"structure"`
4466
4467	// The Amazon Resource Name (ARN) of the load balancer.
4468	//
4469	// LoadBalancerArn is a required field
4470	LoadBalancerArn *string `type:"string" required:"true"`
4471}
4472
4473// String returns the string representation
4474func (s DescribeLoadBalancerAttributesInput) String() string {
4475	return awsutil.Prettify(s)
4476}
4477
4478// GoString returns the string representation
4479func (s DescribeLoadBalancerAttributesInput) GoString() string {
4480	return s.String()
4481}
4482
4483// Validate inspects the fields of the type to determine if they are valid.
4484func (s *DescribeLoadBalancerAttributesInput) Validate() error {
4485	invalidParams := request.ErrInvalidParams{Context: "DescribeLoadBalancerAttributesInput"}
4486	if s.LoadBalancerArn == nil {
4487		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
4488	}
4489
4490	if invalidParams.Len() > 0 {
4491		return invalidParams
4492	}
4493	return nil
4494}
4495
4496// SetLoadBalancerArn sets the LoadBalancerArn field's value.
4497func (s *DescribeLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *DescribeLoadBalancerAttributesInput {
4498	s.LoadBalancerArn = &v
4499	return s
4500}
4501
4502// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributesOutput
4503type DescribeLoadBalancerAttributesOutput struct {
4504	_ struct{} `type:"structure"`
4505
4506	// Information about the load balancer attributes.
4507	Attributes []*LoadBalancerAttribute `type:"list"`
4508}
4509
4510// String returns the string representation
4511func (s DescribeLoadBalancerAttributesOutput) String() string {
4512	return awsutil.Prettify(s)
4513}
4514
4515// GoString returns the string representation
4516func (s DescribeLoadBalancerAttributesOutput) GoString() string {
4517	return s.String()
4518}
4519
4520// SetAttributes sets the Attributes field's value.
4521func (s *DescribeLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAttribute) *DescribeLoadBalancerAttributesOutput {
4522	s.Attributes = v
4523	return s
4524}
4525
4526// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancersInput
4527type DescribeLoadBalancersInput struct {
4528	_ struct{} `type:"structure"`
4529
4530	// The Amazon Resource Names (ARN) of the load balancers. You can specify up
4531	// to 20 load balancers in a single call.
4532	LoadBalancerArns []*string `type:"list"`
4533
4534	// The marker for the next set of results. (You received this marker from a
4535	// previous call.)
4536	Marker *string `type:"string"`
4537
4538	// The names of the load balancers.
4539	Names []*string `type:"list"`
4540
4541	// The maximum number of results to return with this call.
4542	PageSize *int64 `min:"1" type:"integer"`
4543}
4544
4545// String returns the string representation
4546func (s DescribeLoadBalancersInput) String() string {
4547	return awsutil.Prettify(s)
4548}
4549
4550// GoString returns the string representation
4551func (s DescribeLoadBalancersInput) GoString() string {
4552	return s.String()
4553}
4554
4555// Validate inspects the fields of the type to determine if they are valid.
4556func (s *DescribeLoadBalancersInput) Validate() error {
4557	invalidParams := request.ErrInvalidParams{Context: "DescribeLoadBalancersInput"}
4558	if s.PageSize != nil && *s.PageSize < 1 {
4559		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4560	}
4561
4562	if invalidParams.Len() > 0 {
4563		return invalidParams
4564	}
4565	return nil
4566}
4567
4568// SetLoadBalancerArns sets the LoadBalancerArns field's value.
4569func (s *DescribeLoadBalancersInput) SetLoadBalancerArns(v []*string) *DescribeLoadBalancersInput {
4570	s.LoadBalancerArns = v
4571	return s
4572}
4573
4574// SetMarker sets the Marker field's value.
4575func (s *DescribeLoadBalancersInput) SetMarker(v string) *DescribeLoadBalancersInput {
4576	s.Marker = &v
4577	return s
4578}
4579
4580// SetNames sets the Names field's value.
4581func (s *DescribeLoadBalancersInput) SetNames(v []*string) *DescribeLoadBalancersInput {
4582	s.Names = v
4583	return s
4584}
4585
4586// SetPageSize sets the PageSize field's value.
4587func (s *DescribeLoadBalancersInput) SetPageSize(v int64) *DescribeLoadBalancersInput {
4588	s.PageSize = &v
4589	return s
4590}
4591
4592// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancersOutput
4593type DescribeLoadBalancersOutput struct {
4594	_ struct{} `type:"structure"`
4595
4596	// Information about the load balancers.
4597	LoadBalancers []*LoadBalancer `type:"list"`
4598
4599	// The marker to use when requesting the next set of results. If there are no
4600	// additional results, the string is empty.
4601	NextMarker *string `type:"string"`
4602}
4603
4604// String returns the string representation
4605func (s DescribeLoadBalancersOutput) String() string {
4606	return awsutil.Prettify(s)
4607}
4608
4609// GoString returns the string representation
4610func (s DescribeLoadBalancersOutput) GoString() string {
4611	return s.String()
4612}
4613
4614// SetLoadBalancers sets the LoadBalancers field's value.
4615func (s *DescribeLoadBalancersOutput) SetLoadBalancers(v []*LoadBalancer) *DescribeLoadBalancersOutput {
4616	s.LoadBalancers = v
4617	return s
4618}
4619
4620// SetNextMarker sets the NextMarker field's value.
4621func (s *DescribeLoadBalancersOutput) SetNextMarker(v string) *DescribeLoadBalancersOutput {
4622	s.NextMarker = &v
4623	return s
4624}
4625
4626// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRulesInput
4627type DescribeRulesInput struct {
4628	_ struct{} `type:"structure"`
4629
4630	// The Amazon Resource Name (ARN) of the listener.
4631	ListenerArn *string `type:"string"`
4632
4633	// The marker for the next set of results. (You received this marker from a
4634	// previous call.)
4635	Marker *string `type:"string"`
4636
4637	// The maximum number of results to return with this call.
4638	PageSize *int64 `min:"1" type:"integer"`
4639
4640	// The Amazon Resource Names (ARN) of the rules.
4641	RuleArns []*string `type:"list"`
4642}
4643
4644// String returns the string representation
4645func (s DescribeRulesInput) String() string {
4646	return awsutil.Prettify(s)
4647}
4648
4649// GoString returns the string representation
4650func (s DescribeRulesInput) GoString() string {
4651	return s.String()
4652}
4653
4654// Validate inspects the fields of the type to determine if they are valid.
4655func (s *DescribeRulesInput) Validate() error {
4656	invalidParams := request.ErrInvalidParams{Context: "DescribeRulesInput"}
4657	if s.PageSize != nil && *s.PageSize < 1 {
4658		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4659	}
4660
4661	if invalidParams.Len() > 0 {
4662		return invalidParams
4663	}
4664	return nil
4665}
4666
4667// SetListenerArn sets the ListenerArn field's value.
4668func (s *DescribeRulesInput) SetListenerArn(v string) *DescribeRulesInput {
4669	s.ListenerArn = &v
4670	return s
4671}
4672
4673// SetMarker sets the Marker field's value.
4674func (s *DescribeRulesInput) SetMarker(v string) *DescribeRulesInput {
4675	s.Marker = &v
4676	return s
4677}
4678
4679// SetPageSize sets the PageSize field's value.
4680func (s *DescribeRulesInput) SetPageSize(v int64) *DescribeRulesInput {
4681	s.PageSize = &v
4682	return s
4683}
4684
4685// SetRuleArns sets the RuleArns field's value.
4686func (s *DescribeRulesInput) SetRuleArns(v []*string) *DescribeRulesInput {
4687	s.RuleArns = v
4688	return s
4689}
4690
4691// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRulesOutput
4692type DescribeRulesOutput struct {
4693	_ struct{} `type:"structure"`
4694
4695	// The marker to use when requesting the next set of results. If there are no
4696	// additional results, the string is empty.
4697	NextMarker *string `type:"string"`
4698
4699	// Information about the rules.
4700	Rules []*Rule `type:"list"`
4701}
4702
4703// String returns the string representation
4704func (s DescribeRulesOutput) String() string {
4705	return awsutil.Prettify(s)
4706}
4707
4708// GoString returns the string representation
4709func (s DescribeRulesOutput) GoString() string {
4710	return s.String()
4711}
4712
4713// SetNextMarker sets the NextMarker field's value.
4714func (s *DescribeRulesOutput) SetNextMarker(v string) *DescribeRulesOutput {
4715	s.NextMarker = &v
4716	return s
4717}
4718
4719// SetRules sets the Rules field's value.
4720func (s *DescribeRulesOutput) SetRules(v []*Rule) *DescribeRulesOutput {
4721	s.Rules = v
4722	return s
4723}
4724
4725// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPoliciesInput
4726type DescribeSSLPoliciesInput struct {
4727	_ struct{} `type:"structure"`
4728
4729	// The marker for the next set of results. (You received this marker from a
4730	// previous call.)
4731	Marker *string `type:"string"`
4732
4733	// The names of the policies.
4734	Names []*string `type:"list"`
4735
4736	// The maximum number of results to return with this call.
4737	PageSize *int64 `min:"1" type:"integer"`
4738}
4739
4740// String returns the string representation
4741func (s DescribeSSLPoliciesInput) String() string {
4742	return awsutil.Prettify(s)
4743}
4744
4745// GoString returns the string representation
4746func (s DescribeSSLPoliciesInput) GoString() string {
4747	return s.String()
4748}
4749
4750// Validate inspects the fields of the type to determine if they are valid.
4751func (s *DescribeSSLPoliciesInput) Validate() error {
4752	invalidParams := request.ErrInvalidParams{Context: "DescribeSSLPoliciesInput"}
4753	if s.PageSize != nil && *s.PageSize < 1 {
4754		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4755	}
4756
4757	if invalidParams.Len() > 0 {
4758		return invalidParams
4759	}
4760	return nil
4761}
4762
4763// SetMarker sets the Marker field's value.
4764func (s *DescribeSSLPoliciesInput) SetMarker(v string) *DescribeSSLPoliciesInput {
4765	s.Marker = &v
4766	return s
4767}
4768
4769// SetNames sets the Names field's value.
4770func (s *DescribeSSLPoliciesInput) SetNames(v []*string) *DescribeSSLPoliciesInput {
4771	s.Names = v
4772	return s
4773}
4774
4775// SetPageSize sets the PageSize field's value.
4776func (s *DescribeSSLPoliciesInput) SetPageSize(v int64) *DescribeSSLPoliciesInput {
4777	s.PageSize = &v
4778	return s
4779}
4780
4781// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPoliciesOutput
4782type DescribeSSLPoliciesOutput struct {
4783	_ struct{} `type:"structure"`
4784
4785	// The marker to use when requesting the next set of results. If there are no
4786	// additional results, the string is empty.
4787	NextMarker *string `type:"string"`
4788
4789	// Information about the policies.
4790	SslPolicies []*SslPolicy `type:"list"`
4791}
4792
4793// String returns the string representation
4794func (s DescribeSSLPoliciesOutput) String() string {
4795	return awsutil.Prettify(s)
4796}
4797
4798// GoString returns the string representation
4799func (s DescribeSSLPoliciesOutput) GoString() string {
4800	return s.String()
4801}
4802
4803// SetNextMarker sets the NextMarker field's value.
4804func (s *DescribeSSLPoliciesOutput) SetNextMarker(v string) *DescribeSSLPoliciesOutput {
4805	s.NextMarker = &v
4806	return s
4807}
4808
4809// SetSslPolicies sets the SslPolicies field's value.
4810func (s *DescribeSSLPoliciesOutput) SetSslPolicies(v []*SslPolicy) *DescribeSSLPoliciesOutput {
4811	s.SslPolicies = v
4812	return s
4813}
4814
4815// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTagsInput
4816type DescribeTagsInput struct {
4817	_ struct{} `type:"structure"`
4818
4819	// The Amazon Resource Names (ARN) of the resources.
4820	//
4821	// ResourceArns is a required field
4822	ResourceArns []*string `type:"list" required:"true"`
4823}
4824
4825// String returns the string representation
4826func (s DescribeTagsInput) String() string {
4827	return awsutil.Prettify(s)
4828}
4829
4830// GoString returns the string representation
4831func (s DescribeTagsInput) GoString() string {
4832	return s.String()
4833}
4834
4835// Validate inspects the fields of the type to determine if they are valid.
4836func (s *DescribeTagsInput) Validate() error {
4837	invalidParams := request.ErrInvalidParams{Context: "DescribeTagsInput"}
4838	if s.ResourceArns == nil {
4839		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
4840	}
4841
4842	if invalidParams.Len() > 0 {
4843		return invalidParams
4844	}
4845	return nil
4846}
4847
4848// SetResourceArns sets the ResourceArns field's value.
4849func (s *DescribeTagsInput) SetResourceArns(v []*string) *DescribeTagsInput {
4850	s.ResourceArns = v
4851	return s
4852}
4853
4854// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTagsOutput
4855type DescribeTagsOutput struct {
4856	_ struct{} `type:"structure"`
4857
4858	// Information about the tags.
4859	TagDescriptions []*TagDescription `type:"list"`
4860}
4861
4862// String returns the string representation
4863func (s DescribeTagsOutput) String() string {
4864	return awsutil.Prettify(s)
4865}
4866
4867// GoString returns the string representation
4868func (s DescribeTagsOutput) GoString() string {
4869	return s.String()
4870}
4871
4872// SetTagDescriptions sets the TagDescriptions field's value.
4873func (s *DescribeTagsOutput) SetTagDescriptions(v []*TagDescription) *DescribeTagsOutput {
4874	s.TagDescriptions = v
4875	return s
4876}
4877
4878// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributesInput
4879type DescribeTargetGroupAttributesInput struct {
4880	_ struct{} `type:"structure"`
4881
4882	// The Amazon Resource Name (ARN) of the target group.
4883	//
4884	// TargetGroupArn is a required field
4885	TargetGroupArn *string `type:"string" required:"true"`
4886}
4887
4888// String returns the string representation
4889func (s DescribeTargetGroupAttributesInput) String() string {
4890	return awsutil.Prettify(s)
4891}
4892
4893// GoString returns the string representation
4894func (s DescribeTargetGroupAttributesInput) GoString() string {
4895	return s.String()
4896}
4897
4898// Validate inspects the fields of the type to determine if they are valid.
4899func (s *DescribeTargetGroupAttributesInput) Validate() error {
4900	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetGroupAttributesInput"}
4901	if s.TargetGroupArn == nil {
4902		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
4903	}
4904
4905	if invalidParams.Len() > 0 {
4906		return invalidParams
4907	}
4908	return nil
4909}
4910
4911// SetTargetGroupArn sets the TargetGroupArn field's value.
4912func (s *DescribeTargetGroupAttributesInput) SetTargetGroupArn(v string) *DescribeTargetGroupAttributesInput {
4913	s.TargetGroupArn = &v
4914	return s
4915}
4916
4917// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributesOutput
4918type DescribeTargetGroupAttributesOutput struct {
4919	_ struct{} `type:"structure"`
4920
4921	// Information about the target group attributes
4922	Attributes []*TargetGroupAttribute `type:"list"`
4923}
4924
4925// String returns the string representation
4926func (s DescribeTargetGroupAttributesOutput) String() string {
4927	return awsutil.Prettify(s)
4928}
4929
4930// GoString returns the string representation
4931func (s DescribeTargetGroupAttributesOutput) GoString() string {
4932	return s.String()
4933}
4934
4935// SetAttributes sets the Attributes field's value.
4936func (s *DescribeTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttribute) *DescribeTargetGroupAttributesOutput {
4937	s.Attributes = v
4938	return s
4939}
4940
4941// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupsInput
4942type DescribeTargetGroupsInput struct {
4943	_ struct{} `type:"structure"`
4944
4945	// The Amazon Resource Name (ARN) of the load balancer.
4946	LoadBalancerArn *string `type:"string"`
4947
4948	// The marker for the next set of results. (You received this marker from a
4949	// previous call.)
4950	Marker *string `type:"string"`
4951
4952	// The names of the target groups.
4953	Names []*string `type:"list"`
4954
4955	// The maximum number of results to return with this call.
4956	PageSize *int64 `min:"1" type:"integer"`
4957
4958	// The Amazon Resource Names (ARN) of the target groups.
4959	TargetGroupArns []*string `type:"list"`
4960}
4961
4962// String returns the string representation
4963func (s DescribeTargetGroupsInput) String() string {
4964	return awsutil.Prettify(s)
4965}
4966
4967// GoString returns the string representation
4968func (s DescribeTargetGroupsInput) GoString() string {
4969	return s.String()
4970}
4971
4972// Validate inspects the fields of the type to determine if they are valid.
4973func (s *DescribeTargetGroupsInput) Validate() error {
4974	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetGroupsInput"}
4975	if s.PageSize != nil && *s.PageSize < 1 {
4976		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
4977	}
4978
4979	if invalidParams.Len() > 0 {
4980		return invalidParams
4981	}
4982	return nil
4983}
4984
4985// SetLoadBalancerArn sets the LoadBalancerArn field's value.
4986func (s *DescribeTargetGroupsInput) SetLoadBalancerArn(v string) *DescribeTargetGroupsInput {
4987	s.LoadBalancerArn = &v
4988	return s
4989}
4990
4991// SetMarker sets the Marker field's value.
4992func (s *DescribeTargetGroupsInput) SetMarker(v string) *DescribeTargetGroupsInput {
4993	s.Marker = &v
4994	return s
4995}
4996
4997// SetNames sets the Names field's value.
4998func (s *DescribeTargetGroupsInput) SetNames(v []*string) *DescribeTargetGroupsInput {
4999	s.Names = v
5000	return s
5001}
5002
5003// SetPageSize sets the PageSize field's value.
5004func (s *DescribeTargetGroupsInput) SetPageSize(v int64) *DescribeTargetGroupsInput {
5005	s.PageSize = &v
5006	return s
5007}
5008
5009// SetTargetGroupArns sets the TargetGroupArns field's value.
5010func (s *DescribeTargetGroupsInput) SetTargetGroupArns(v []*string) *DescribeTargetGroupsInput {
5011	s.TargetGroupArns = v
5012	return s
5013}
5014
5015// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupsOutput
5016type DescribeTargetGroupsOutput struct {
5017	_ struct{} `type:"structure"`
5018
5019	// The marker to use when requesting the next set of results. If there are no
5020	// additional results, the string is empty.
5021	NextMarker *string `type:"string"`
5022
5023	// Information about the target groups.
5024	TargetGroups []*TargetGroup `type:"list"`
5025}
5026
5027// String returns the string representation
5028func (s DescribeTargetGroupsOutput) String() string {
5029	return awsutil.Prettify(s)
5030}
5031
5032// GoString returns the string representation
5033func (s DescribeTargetGroupsOutput) GoString() string {
5034	return s.String()
5035}
5036
5037// SetNextMarker sets the NextMarker field's value.
5038func (s *DescribeTargetGroupsOutput) SetNextMarker(v string) *DescribeTargetGroupsOutput {
5039	s.NextMarker = &v
5040	return s
5041}
5042
5043// SetTargetGroups sets the TargetGroups field's value.
5044func (s *DescribeTargetGroupsOutput) SetTargetGroups(v []*TargetGroup) *DescribeTargetGroupsOutput {
5045	s.TargetGroups = v
5046	return s
5047}
5048
5049// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealthInput
5050type DescribeTargetHealthInput struct {
5051	_ struct{} `type:"structure"`
5052
5053	// The Amazon Resource Name (ARN) of the target group.
5054	//
5055	// TargetGroupArn is a required field
5056	TargetGroupArn *string `type:"string" required:"true"`
5057
5058	// The targets.
5059	Targets []*TargetDescription `type:"list"`
5060}
5061
5062// String returns the string representation
5063func (s DescribeTargetHealthInput) String() string {
5064	return awsutil.Prettify(s)
5065}
5066
5067// GoString returns the string representation
5068func (s DescribeTargetHealthInput) GoString() string {
5069	return s.String()
5070}
5071
5072// Validate inspects the fields of the type to determine if they are valid.
5073func (s *DescribeTargetHealthInput) Validate() error {
5074	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetHealthInput"}
5075	if s.TargetGroupArn == nil {
5076		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
5077	}
5078	if s.Targets != nil {
5079		for i, v := range s.Targets {
5080			if v == nil {
5081				continue
5082			}
5083			if err := v.Validate(); err != nil {
5084				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
5085			}
5086		}
5087	}
5088
5089	if invalidParams.Len() > 0 {
5090		return invalidParams
5091	}
5092	return nil
5093}
5094
5095// SetTargetGroupArn sets the TargetGroupArn field's value.
5096func (s *DescribeTargetHealthInput) SetTargetGroupArn(v string) *DescribeTargetHealthInput {
5097	s.TargetGroupArn = &v
5098	return s
5099}
5100
5101// SetTargets sets the Targets field's value.
5102func (s *DescribeTargetHealthInput) SetTargets(v []*TargetDescription) *DescribeTargetHealthInput {
5103	s.Targets = v
5104	return s
5105}
5106
5107// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealthOutput
5108type DescribeTargetHealthOutput struct {
5109	_ struct{} `type:"structure"`
5110
5111	// Information about the health of the targets.
5112	TargetHealthDescriptions []*TargetHealthDescription `type:"list"`
5113}
5114
5115// String returns the string representation
5116func (s DescribeTargetHealthOutput) String() string {
5117	return awsutil.Prettify(s)
5118}
5119
5120// GoString returns the string representation
5121func (s DescribeTargetHealthOutput) GoString() string {
5122	return s.String()
5123}
5124
5125// SetTargetHealthDescriptions sets the TargetHealthDescriptions field's value.
5126func (s *DescribeTargetHealthOutput) SetTargetHealthDescriptions(v []*TargetHealthDescription) *DescribeTargetHealthOutput {
5127	s.TargetHealthDescriptions = v
5128	return s
5129}
5130
5131// Information about an Elastic Load Balancing resource limit for your AWS account.
5132// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Limit
5133type Limit struct {
5134	_ struct{} `type:"structure"`
5135
5136	// The maximum value of the limit.
5137	Max *string `type:"string"`
5138
5139	// The name of the limit. The possible values are:
5140	//
5141	//    * application-load-balancers
5142	//
5143	//    * listeners-per-application-load-balancer
5144	//
5145	//    * listeners-per-network-load-balancer
5146	//
5147	//    * network-load-balancers
5148	//
5149	//    * rules-per-application-load-balancer
5150	//
5151	//    * target-groups
5152	//
5153	//    * targets-per-application-load-balancer
5154	Name *string `type:"string"`
5155}
5156
5157// String returns the string representation
5158func (s Limit) String() string {
5159	return awsutil.Prettify(s)
5160}
5161
5162// GoString returns the string representation
5163func (s Limit) GoString() string {
5164	return s.String()
5165}
5166
5167// SetMax sets the Max field's value.
5168func (s *Limit) SetMax(v string) *Limit {
5169	s.Max = &v
5170	return s
5171}
5172
5173// SetName sets the Name field's value.
5174func (s *Limit) SetName(v string) *Limit {
5175	s.Name = &v
5176	return s
5177}
5178
5179// Information about a listener.
5180// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Listener
5181type Listener struct {
5182	_ struct{} `type:"structure"`
5183
5184	// The SSL server certificate. You must provide a certificate if the protocol
5185	// is HTTPS.
5186	Certificates []*Certificate `type:"list"`
5187
5188	// The default actions for the listener.
5189	DefaultActions []*Action `type:"list"`
5190
5191	// The Amazon Resource Name (ARN) of the listener.
5192	ListenerArn *string `type:"string"`
5193
5194	// The Amazon Resource Name (ARN) of the load balancer.
5195	LoadBalancerArn *string `type:"string"`
5196
5197	// The port on which the load balancer is listening.
5198	Port *int64 `min:"1" type:"integer"`
5199
5200	// The protocol for connections from clients to the load balancer.
5201	Protocol *string `type:"string" enum:"ProtocolEnum"`
5202
5203	// The security policy that defines which ciphers and protocols are supported.
5204	// The default is the current predefined security policy.
5205	SslPolicy *string `type:"string"`
5206}
5207
5208// String returns the string representation
5209func (s Listener) String() string {
5210	return awsutil.Prettify(s)
5211}
5212
5213// GoString returns the string representation
5214func (s Listener) GoString() string {
5215	return s.String()
5216}
5217
5218// SetCertificates sets the Certificates field's value.
5219func (s *Listener) SetCertificates(v []*Certificate) *Listener {
5220	s.Certificates = v
5221	return s
5222}
5223
5224// SetDefaultActions sets the DefaultActions field's value.
5225func (s *Listener) SetDefaultActions(v []*Action) *Listener {
5226	s.DefaultActions = v
5227	return s
5228}
5229
5230// SetListenerArn sets the ListenerArn field's value.
5231func (s *Listener) SetListenerArn(v string) *Listener {
5232	s.ListenerArn = &v
5233	return s
5234}
5235
5236// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5237func (s *Listener) SetLoadBalancerArn(v string) *Listener {
5238	s.LoadBalancerArn = &v
5239	return s
5240}
5241
5242// SetPort sets the Port field's value.
5243func (s *Listener) SetPort(v int64) *Listener {
5244	s.Port = &v
5245	return s
5246}
5247
5248// SetProtocol sets the Protocol field's value.
5249func (s *Listener) SetProtocol(v string) *Listener {
5250	s.Protocol = &v
5251	return s
5252}
5253
5254// SetSslPolicy sets the SslPolicy field's value.
5255func (s *Listener) SetSslPolicy(v string) *Listener {
5256	s.SslPolicy = &v
5257	return s
5258}
5259
5260// Information about a load balancer.
5261// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancer
5262type LoadBalancer struct {
5263	_ struct{} `type:"structure"`
5264
5265	// The Availability Zones for the load balancer.
5266	AvailabilityZones []*AvailabilityZone `type:"list"`
5267
5268	// The ID of the Amazon Route 53 hosted zone associated with the load balancer.
5269	CanonicalHostedZoneId *string `type:"string"`
5270
5271	// The date and time the load balancer was created.
5272	CreatedTime *time.Time `type:"timestamp" timestampFormat:"iso8601"`
5273
5274	// The public DNS name of the load balancer.
5275	DNSName *string `type:"string"`
5276
5277	// The type of IP addresses used by the subnets for your load balancer. The
5278	// possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and
5279	// IPv6 addresses).
5280	IpAddressType *string `type:"string" enum:"IpAddressType"`
5281
5282	// The Amazon Resource Name (ARN) of the load balancer.
5283	LoadBalancerArn *string `type:"string"`
5284
5285	// The name of the load balancer.
5286	LoadBalancerName *string `type:"string"`
5287
5288	// The nodes of an Internet-facing load balancer have public IP addresses. The
5289	// DNS name of an Internet-facing load balancer is publicly resolvable to the
5290	// public IP addresses of the nodes. Therefore, Internet-facing load balancers
5291	// can route requests from clients over the Internet.
5292	//
5293	// The nodes of an internal load balancer have only private IP addresses. The
5294	// DNS name of an internal load balancer is publicly resolvable to the private
5295	// IP addresses of the nodes. Therefore, internal load balancers can only route
5296	// requests from clients with access to the VPC for the load balancer.
5297	Scheme *string `type:"string" enum:"LoadBalancerSchemeEnum"`
5298
5299	// The IDs of the security groups for the load balancer.
5300	SecurityGroups []*string `type:"list"`
5301
5302	// The state of the load balancer.
5303	State *LoadBalancerState `type:"structure"`
5304
5305	// The type of load balancer.
5306	Type *string `type:"string" enum:"LoadBalancerTypeEnum"`
5307
5308	// The ID of the VPC for the load balancer.
5309	VpcId *string `type:"string"`
5310}
5311
5312// String returns the string representation
5313func (s LoadBalancer) String() string {
5314	return awsutil.Prettify(s)
5315}
5316
5317// GoString returns the string representation
5318func (s LoadBalancer) GoString() string {
5319	return s.String()
5320}
5321
5322// SetAvailabilityZones sets the AvailabilityZones field's value.
5323func (s *LoadBalancer) SetAvailabilityZones(v []*AvailabilityZone) *LoadBalancer {
5324	s.AvailabilityZones = v
5325	return s
5326}
5327
5328// SetCanonicalHostedZoneId sets the CanonicalHostedZoneId field's value.
5329func (s *LoadBalancer) SetCanonicalHostedZoneId(v string) *LoadBalancer {
5330	s.CanonicalHostedZoneId = &v
5331	return s
5332}
5333
5334// SetCreatedTime sets the CreatedTime field's value.
5335func (s *LoadBalancer) SetCreatedTime(v time.Time) *LoadBalancer {
5336	s.CreatedTime = &v
5337	return s
5338}
5339
5340// SetDNSName sets the DNSName field's value.
5341func (s *LoadBalancer) SetDNSName(v string) *LoadBalancer {
5342	s.DNSName = &v
5343	return s
5344}
5345
5346// SetIpAddressType sets the IpAddressType field's value.
5347func (s *LoadBalancer) SetIpAddressType(v string) *LoadBalancer {
5348	s.IpAddressType = &v
5349	return s
5350}
5351
5352// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5353func (s *LoadBalancer) SetLoadBalancerArn(v string) *LoadBalancer {
5354	s.LoadBalancerArn = &v
5355	return s
5356}
5357
5358// SetLoadBalancerName sets the LoadBalancerName field's value.
5359func (s *LoadBalancer) SetLoadBalancerName(v string) *LoadBalancer {
5360	s.LoadBalancerName = &v
5361	return s
5362}
5363
5364// SetScheme sets the Scheme field's value.
5365func (s *LoadBalancer) SetScheme(v string) *LoadBalancer {
5366	s.Scheme = &v
5367	return s
5368}
5369
5370// SetSecurityGroups sets the SecurityGroups field's value.
5371func (s *LoadBalancer) SetSecurityGroups(v []*string) *LoadBalancer {
5372	s.SecurityGroups = v
5373	return s
5374}
5375
5376// SetState sets the State field's value.
5377func (s *LoadBalancer) SetState(v *LoadBalancerState) *LoadBalancer {
5378	s.State = v
5379	return s
5380}
5381
5382// SetType sets the Type field's value.
5383func (s *LoadBalancer) SetType(v string) *LoadBalancer {
5384	s.Type = &v
5385	return s
5386}
5387
5388// SetVpcId sets the VpcId field's value.
5389func (s *LoadBalancer) SetVpcId(v string) *LoadBalancer {
5390	s.VpcId = &v
5391	return s
5392}
5393
5394// Information about a static IP address for a load balancer.
5395// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerAddress
5396type LoadBalancerAddress struct {
5397	_ struct{} `type:"structure"`
5398
5399	// [Network Load Balancers] The allocation ID of the Elastic IP address.
5400	AllocationId *string `type:"string"`
5401
5402	// The static IP address.
5403	IpAddress *string `type:"string"`
5404}
5405
5406// String returns the string representation
5407func (s LoadBalancerAddress) String() string {
5408	return awsutil.Prettify(s)
5409}
5410
5411// GoString returns the string representation
5412func (s LoadBalancerAddress) GoString() string {
5413	return s.String()
5414}
5415
5416// SetAllocationId sets the AllocationId field's value.
5417func (s *LoadBalancerAddress) SetAllocationId(v string) *LoadBalancerAddress {
5418	s.AllocationId = &v
5419	return s
5420}
5421
5422// SetIpAddress sets the IpAddress field's value.
5423func (s *LoadBalancerAddress) SetIpAddress(v string) *LoadBalancerAddress {
5424	s.IpAddress = &v
5425	return s
5426}
5427
5428// Information about a load balancer attribute.
5429// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerAttribute
5430type LoadBalancerAttribute struct {
5431	_ struct{} `type:"structure"`
5432
5433	// The name of the attribute.
5434	//
5435	//    * access_logs.s3.enabled - [Application Load Balancers] Indicates whether
5436	//    access logs stored in Amazon S3 are enabled. The value is true or false.
5437	//
5438	//    * access_logs.s3.bucket - [Application Load Balancers] The name of the
5439	//    S3 bucket for the access logs. This attribute is required if access logs
5440	//    in Amazon S3 are enabled. The bucket must exist in the same region as
5441	//    the load balancer and have a bucket policy that grants Elastic Load Balancing
5442	//    permission to write to the bucket.
5443	//
5444	//    * access_logs.s3.prefix - [Application Load Balancers] The prefix for
5445	//    the location in the S3 bucket. If you don't specify a prefix, the access
5446	//    logs are stored in the root of the bucket.
5447	//
5448	//    * deletion_protection.enabled - Indicates whether deletion protection
5449	//    is enabled. The value is true or false.
5450	//
5451	//    * idle_timeout.timeout_seconds - [Application Load Balancers] The idle
5452	//    timeout value, in seconds. The valid range is 1-4000. The default is 60
5453	//    seconds.
5454	Key *string `type:"string"`
5455
5456	// The value of the attribute.
5457	Value *string `type:"string"`
5458}
5459
5460// String returns the string representation
5461func (s LoadBalancerAttribute) String() string {
5462	return awsutil.Prettify(s)
5463}
5464
5465// GoString returns the string representation
5466func (s LoadBalancerAttribute) GoString() string {
5467	return s.String()
5468}
5469
5470// SetKey sets the Key field's value.
5471func (s *LoadBalancerAttribute) SetKey(v string) *LoadBalancerAttribute {
5472	s.Key = &v
5473	return s
5474}
5475
5476// SetValue sets the Value field's value.
5477func (s *LoadBalancerAttribute) SetValue(v string) *LoadBalancerAttribute {
5478	s.Value = &v
5479	return s
5480}
5481
5482// Information about the state of the load balancer.
5483// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/LoadBalancerState
5484type LoadBalancerState struct {
5485	_ struct{} `type:"structure"`
5486
5487	// The state code. The initial state of the load balancer is provisioning. After
5488	// the load balancer is fully set up and ready to route traffic, its state is
5489	// active. If the load balancer could not be set up, its state is failed.
5490	Code *string `type:"string" enum:"LoadBalancerStateEnum"`
5491
5492	// A description of the state.
5493	Reason *string `type:"string"`
5494}
5495
5496// String returns the string representation
5497func (s LoadBalancerState) String() string {
5498	return awsutil.Prettify(s)
5499}
5500
5501// GoString returns the string representation
5502func (s LoadBalancerState) GoString() string {
5503	return s.String()
5504}
5505
5506// SetCode sets the Code field's value.
5507func (s *LoadBalancerState) SetCode(v string) *LoadBalancerState {
5508	s.Code = &v
5509	return s
5510}
5511
5512// SetReason sets the Reason field's value.
5513func (s *LoadBalancerState) SetReason(v string) *LoadBalancerState {
5514	s.Reason = &v
5515	return s
5516}
5517
5518// Information to use when checking for a successful response from a target.
5519// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Matcher
5520type Matcher struct {
5521	_ struct{} `type:"structure"`
5522
5523	// The HTTP codes.
5524	//
5525	// For Application Load Balancers, you can specify values between 200 and 499,
5526	// and the default value is 200. You can specify multiple values (for example,
5527	// "200,202") or a range of values (for example, "200-299").
5528	//
5529	// For Network Load Balancers, this is 200 to 399.
5530	//
5531	// HttpCode is a required field
5532	HttpCode *string `type:"string" required:"true"`
5533}
5534
5535// String returns the string representation
5536func (s Matcher) String() string {
5537	return awsutil.Prettify(s)
5538}
5539
5540// GoString returns the string representation
5541func (s Matcher) GoString() string {
5542	return s.String()
5543}
5544
5545// Validate inspects the fields of the type to determine if they are valid.
5546func (s *Matcher) Validate() error {
5547	invalidParams := request.ErrInvalidParams{Context: "Matcher"}
5548	if s.HttpCode == nil {
5549		invalidParams.Add(request.NewErrParamRequired("HttpCode"))
5550	}
5551
5552	if invalidParams.Len() > 0 {
5553		return invalidParams
5554	}
5555	return nil
5556}
5557
5558// SetHttpCode sets the HttpCode field's value.
5559func (s *Matcher) SetHttpCode(v string) *Matcher {
5560	s.HttpCode = &v
5561	return s
5562}
5563
5564// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListenerInput
5565type ModifyListenerInput struct {
5566	_ struct{} `type:"structure"`
5567
5568	// The SSL server certificate.
5569	Certificates []*Certificate `type:"list"`
5570
5571	// The default action. For Application Load Balancers, the protocol of the specified
5572	// target group must be HTTP or HTTPS. For Network Load Balancers, the protocol
5573	// of the specified target group must be TCP.
5574	DefaultActions []*Action `type:"list"`
5575
5576	// The Amazon Resource Name (ARN) of the listener.
5577	//
5578	// ListenerArn is a required field
5579	ListenerArn *string `type:"string" required:"true"`
5580
5581	// The port for connections from clients to the load balancer.
5582	Port *int64 `min:"1" type:"integer"`
5583
5584	// The protocol for connections from clients to the load balancer. Application
5585	// Load Balancers support HTTP and HTTPS and Network Load Balancers support
5586	// TCP.
5587	Protocol *string `type:"string" enum:"ProtocolEnum"`
5588
5589	// The security policy that defines which protocols and ciphers are supported.
5590	// For more information, see Security Policies (http://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)
5591	// in the Application Load Balancers Guide.
5592	SslPolicy *string `type:"string"`
5593}
5594
5595// String returns the string representation
5596func (s ModifyListenerInput) String() string {
5597	return awsutil.Prettify(s)
5598}
5599
5600// GoString returns the string representation
5601func (s ModifyListenerInput) GoString() string {
5602	return s.String()
5603}
5604
5605// Validate inspects the fields of the type to determine if they are valid.
5606func (s *ModifyListenerInput) Validate() error {
5607	invalidParams := request.ErrInvalidParams{Context: "ModifyListenerInput"}
5608	if s.ListenerArn == nil {
5609		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
5610	}
5611	if s.Port != nil && *s.Port < 1 {
5612		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
5613	}
5614	if s.DefaultActions != nil {
5615		for i, v := range s.DefaultActions {
5616			if v == nil {
5617				continue
5618			}
5619			if err := v.Validate(); err != nil {
5620				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultActions", i), err.(request.ErrInvalidParams))
5621			}
5622		}
5623	}
5624
5625	if invalidParams.Len() > 0 {
5626		return invalidParams
5627	}
5628	return nil
5629}
5630
5631// SetCertificates sets the Certificates field's value.
5632func (s *ModifyListenerInput) SetCertificates(v []*Certificate) *ModifyListenerInput {
5633	s.Certificates = v
5634	return s
5635}
5636
5637// SetDefaultActions sets the DefaultActions field's value.
5638func (s *ModifyListenerInput) SetDefaultActions(v []*Action) *ModifyListenerInput {
5639	s.DefaultActions = v
5640	return s
5641}
5642
5643// SetListenerArn sets the ListenerArn field's value.
5644func (s *ModifyListenerInput) SetListenerArn(v string) *ModifyListenerInput {
5645	s.ListenerArn = &v
5646	return s
5647}
5648
5649// SetPort sets the Port field's value.
5650func (s *ModifyListenerInput) SetPort(v int64) *ModifyListenerInput {
5651	s.Port = &v
5652	return s
5653}
5654
5655// SetProtocol sets the Protocol field's value.
5656func (s *ModifyListenerInput) SetProtocol(v string) *ModifyListenerInput {
5657	s.Protocol = &v
5658	return s
5659}
5660
5661// SetSslPolicy sets the SslPolicy field's value.
5662func (s *ModifyListenerInput) SetSslPolicy(v string) *ModifyListenerInput {
5663	s.SslPolicy = &v
5664	return s
5665}
5666
5667// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListenerOutput
5668type ModifyListenerOutput struct {
5669	_ struct{} `type:"structure"`
5670
5671	// Information about the modified listeners.
5672	Listeners []*Listener `type:"list"`
5673}
5674
5675// String returns the string representation
5676func (s ModifyListenerOutput) String() string {
5677	return awsutil.Prettify(s)
5678}
5679
5680// GoString returns the string representation
5681func (s ModifyListenerOutput) GoString() string {
5682	return s.String()
5683}
5684
5685// SetListeners sets the Listeners field's value.
5686func (s *ModifyListenerOutput) SetListeners(v []*Listener) *ModifyListenerOutput {
5687	s.Listeners = v
5688	return s
5689}
5690
5691// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributesInput
5692type ModifyLoadBalancerAttributesInput struct {
5693	_ struct{} `type:"structure"`
5694
5695	// The load balancer attributes.
5696	//
5697	// Attributes is a required field
5698	Attributes []*LoadBalancerAttribute `type:"list" required:"true"`
5699
5700	// The Amazon Resource Name (ARN) of the load balancer.
5701	//
5702	// LoadBalancerArn is a required field
5703	LoadBalancerArn *string `type:"string" required:"true"`
5704}
5705
5706// String returns the string representation
5707func (s ModifyLoadBalancerAttributesInput) String() string {
5708	return awsutil.Prettify(s)
5709}
5710
5711// GoString returns the string representation
5712func (s ModifyLoadBalancerAttributesInput) GoString() string {
5713	return s.String()
5714}
5715
5716// Validate inspects the fields of the type to determine if they are valid.
5717func (s *ModifyLoadBalancerAttributesInput) Validate() error {
5718	invalidParams := request.ErrInvalidParams{Context: "ModifyLoadBalancerAttributesInput"}
5719	if s.Attributes == nil {
5720		invalidParams.Add(request.NewErrParamRequired("Attributes"))
5721	}
5722	if s.LoadBalancerArn == nil {
5723		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
5724	}
5725
5726	if invalidParams.Len() > 0 {
5727		return invalidParams
5728	}
5729	return nil
5730}
5731
5732// SetAttributes sets the Attributes field's value.
5733func (s *ModifyLoadBalancerAttributesInput) SetAttributes(v []*LoadBalancerAttribute) *ModifyLoadBalancerAttributesInput {
5734	s.Attributes = v
5735	return s
5736}
5737
5738// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5739func (s *ModifyLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *ModifyLoadBalancerAttributesInput {
5740	s.LoadBalancerArn = &v
5741	return s
5742}
5743
5744// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributesOutput
5745type ModifyLoadBalancerAttributesOutput struct {
5746	_ struct{} `type:"structure"`
5747
5748	// Information about the load balancer attributes.
5749	Attributes []*LoadBalancerAttribute `type:"list"`
5750}
5751
5752// String returns the string representation
5753func (s ModifyLoadBalancerAttributesOutput) String() string {
5754	return awsutil.Prettify(s)
5755}
5756
5757// GoString returns the string representation
5758func (s ModifyLoadBalancerAttributesOutput) GoString() string {
5759	return s.String()
5760}
5761
5762// SetAttributes sets the Attributes field's value.
5763func (s *ModifyLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAttribute) *ModifyLoadBalancerAttributesOutput {
5764	s.Attributes = v
5765	return s
5766}
5767
5768// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRuleInput
5769type ModifyRuleInput struct {
5770	_ struct{} `type:"structure"`
5771
5772	// The actions. The target group must use the HTTP or HTTPS protocol.
5773	Actions []*Action `type:"list"`
5774
5775	// The conditions.
5776	Conditions []*RuleCondition `type:"list"`
5777
5778	// The Amazon Resource Name (ARN) of the rule.
5779	//
5780	// RuleArn is a required field
5781	RuleArn *string `type:"string" required:"true"`
5782}
5783
5784// String returns the string representation
5785func (s ModifyRuleInput) String() string {
5786	return awsutil.Prettify(s)
5787}
5788
5789// GoString returns the string representation
5790func (s ModifyRuleInput) GoString() string {
5791	return s.String()
5792}
5793
5794// Validate inspects the fields of the type to determine if they are valid.
5795func (s *ModifyRuleInput) Validate() error {
5796	invalidParams := request.ErrInvalidParams{Context: "ModifyRuleInput"}
5797	if s.RuleArn == nil {
5798		invalidParams.Add(request.NewErrParamRequired("RuleArn"))
5799	}
5800	if s.Actions != nil {
5801		for i, v := range s.Actions {
5802			if v == nil {
5803				continue
5804			}
5805			if err := v.Validate(); err != nil {
5806				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
5807			}
5808		}
5809	}
5810
5811	if invalidParams.Len() > 0 {
5812		return invalidParams
5813	}
5814	return nil
5815}
5816
5817// SetActions sets the Actions field's value.
5818func (s *ModifyRuleInput) SetActions(v []*Action) *ModifyRuleInput {
5819	s.Actions = v
5820	return s
5821}
5822
5823// SetConditions sets the Conditions field's value.
5824func (s *ModifyRuleInput) SetConditions(v []*RuleCondition) *ModifyRuleInput {
5825	s.Conditions = v
5826	return s
5827}
5828
5829// SetRuleArn sets the RuleArn field's value.
5830func (s *ModifyRuleInput) SetRuleArn(v string) *ModifyRuleInput {
5831	s.RuleArn = &v
5832	return s
5833}
5834
5835// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRuleOutput
5836type ModifyRuleOutput struct {
5837	_ struct{} `type:"structure"`
5838
5839	// Information about the rule.
5840	Rules []*Rule `type:"list"`
5841}
5842
5843// String returns the string representation
5844func (s ModifyRuleOutput) String() string {
5845	return awsutil.Prettify(s)
5846}
5847
5848// GoString returns the string representation
5849func (s ModifyRuleOutput) GoString() string {
5850	return s.String()
5851}
5852
5853// SetRules sets the Rules field's value.
5854func (s *ModifyRuleOutput) SetRules(v []*Rule) *ModifyRuleOutput {
5855	s.Rules = v
5856	return s
5857}
5858
5859// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributesInput
5860type ModifyTargetGroupAttributesInput struct {
5861	_ struct{} `type:"structure"`
5862
5863	// The attributes.
5864	//
5865	// Attributes is a required field
5866	Attributes []*TargetGroupAttribute `type:"list" required:"true"`
5867
5868	// The Amazon Resource Name (ARN) of the target group.
5869	//
5870	// TargetGroupArn is a required field
5871	TargetGroupArn *string `type:"string" required:"true"`
5872}
5873
5874// String returns the string representation
5875func (s ModifyTargetGroupAttributesInput) String() string {
5876	return awsutil.Prettify(s)
5877}
5878
5879// GoString returns the string representation
5880func (s ModifyTargetGroupAttributesInput) GoString() string {
5881	return s.String()
5882}
5883
5884// Validate inspects the fields of the type to determine if they are valid.
5885func (s *ModifyTargetGroupAttributesInput) Validate() error {
5886	invalidParams := request.ErrInvalidParams{Context: "ModifyTargetGroupAttributesInput"}
5887	if s.Attributes == nil {
5888		invalidParams.Add(request.NewErrParamRequired("Attributes"))
5889	}
5890	if s.TargetGroupArn == nil {
5891		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
5892	}
5893
5894	if invalidParams.Len() > 0 {
5895		return invalidParams
5896	}
5897	return nil
5898}
5899
5900// SetAttributes sets the Attributes field's value.
5901func (s *ModifyTargetGroupAttributesInput) SetAttributes(v []*TargetGroupAttribute) *ModifyTargetGroupAttributesInput {
5902	s.Attributes = v
5903	return s
5904}
5905
5906// SetTargetGroupArn sets the TargetGroupArn field's value.
5907func (s *ModifyTargetGroupAttributesInput) SetTargetGroupArn(v string) *ModifyTargetGroupAttributesInput {
5908	s.TargetGroupArn = &v
5909	return s
5910}
5911
5912// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributesOutput
5913type ModifyTargetGroupAttributesOutput struct {
5914	_ struct{} `type:"structure"`
5915
5916	// Information about the attributes.
5917	Attributes []*TargetGroupAttribute `type:"list"`
5918}
5919
5920// String returns the string representation
5921func (s ModifyTargetGroupAttributesOutput) String() string {
5922	return awsutil.Prettify(s)
5923}
5924
5925// GoString returns the string representation
5926func (s ModifyTargetGroupAttributesOutput) GoString() string {
5927	return s.String()
5928}
5929
5930// SetAttributes sets the Attributes field's value.
5931func (s *ModifyTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttribute) *ModifyTargetGroupAttributesOutput {
5932	s.Attributes = v
5933	return s
5934}
5935
5936// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupInput
5937type ModifyTargetGroupInput struct {
5938	_ struct{} `type:"structure"`
5939
5940	// The approximate amount of time, in seconds, between health checks of an individual
5941	// target. For Application Load Balancers, the range is 5 to 300 seconds. For
5942	// Network Load Balancers, the supported values are 10 or 30 seconds.
5943	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
5944
5945	// [HTTP/HTTPS health checks] The ping path that is the destination for the
5946	// health check request.
5947	HealthCheckPath *string `min:"1" type:"string"`
5948
5949	// The port the load balancer uses when performing health checks on targets.
5950	HealthCheckPort *string `type:"string"`
5951
5952	// The protocol the load balancer uses when performing health checks on targets.
5953	// The TCP protocol is supported only if the protocol of the target group is
5954	// TCP.
5955	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
5956
5957	// [HTTP/HTTPS health checks] The amount of time, in seconds, during which no
5958	// response means a failed health check.
5959	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
5960
5961	// The number of consecutive health checks successes required before considering
5962	// an unhealthy target healthy.
5963	HealthyThresholdCount *int64 `min:"2" type:"integer"`
5964
5965	// [HTTP/HTTPS health checks] The HTTP codes to use when checking for a successful
5966	// response from a target.
5967	Matcher *Matcher `type:"structure"`
5968
5969	// The Amazon Resource Name (ARN) of the target group.
5970	//
5971	// TargetGroupArn is a required field
5972	TargetGroupArn *string `type:"string" required:"true"`
5973
5974	// The number of consecutive health check failures required before considering
5975	// the target unhealthy. For Network Load Balancers, this value must be the
5976	// same as the healthy threshold count.
5977	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
5978}
5979
5980// String returns the string representation
5981func (s ModifyTargetGroupInput) String() string {
5982	return awsutil.Prettify(s)
5983}
5984
5985// GoString returns the string representation
5986func (s ModifyTargetGroupInput) GoString() string {
5987	return s.String()
5988}
5989
5990// Validate inspects the fields of the type to determine if they are valid.
5991func (s *ModifyTargetGroupInput) Validate() error {
5992	invalidParams := request.ErrInvalidParams{Context: "ModifyTargetGroupInput"}
5993	if s.HealthCheckIntervalSeconds != nil && *s.HealthCheckIntervalSeconds < 5 {
5994		invalidParams.Add(request.NewErrParamMinValue("HealthCheckIntervalSeconds", 5))
5995	}
5996	if s.HealthCheckPath != nil && len(*s.HealthCheckPath) < 1 {
5997		invalidParams.Add(request.NewErrParamMinLen("HealthCheckPath", 1))
5998	}
5999	if s.HealthCheckTimeoutSeconds != nil && *s.HealthCheckTimeoutSeconds < 2 {
6000		invalidParams.Add(request.NewErrParamMinValue("HealthCheckTimeoutSeconds", 2))
6001	}
6002	if s.HealthyThresholdCount != nil && *s.HealthyThresholdCount < 2 {
6003		invalidParams.Add(request.NewErrParamMinValue("HealthyThresholdCount", 2))
6004	}
6005	if s.TargetGroupArn == nil {
6006		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
6007	}
6008	if s.UnhealthyThresholdCount != nil && *s.UnhealthyThresholdCount < 2 {
6009		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThresholdCount", 2))
6010	}
6011	if s.Matcher != nil {
6012		if err := s.Matcher.Validate(); err != nil {
6013			invalidParams.AddNested("Matcher", err.(request.ErrInvalidParams))
6014		}
6015	}
6016
6017	if invalidParams.Len() > 0 {
6018		return invalidParams
6019	}
6020	return nil
6021}
6022
6023// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
6024func (s *ModifyTargetGroupInput) SetHealthCheckIntervalSeconds(v int64) *ModifyTargetGroupInput {
6025	s.HealthCheckIntervalSeconds = &v
6026	return s
6027}
6028
6029// SetHealthCheckPath sets the HealthCheckPath field's value.
6030func (s *ModifyTargetGroupInput) SetHealthCheckPath(v string) *ModifyTargetGroupInput {
6031	s.HealthCheckPath = &v
6032	return s
6033}
6034
6035// SetHealthCheckPort sets the HealthCheckPort field's value.
6036func (s *ModifyTargetGroupInput) SetHealthCheckPort(v string) *ModifyTargetGroupInput {
6037	s.HealthCheckPort = &v
6038	return s
6039}
6040
6041// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
6042func (s *ModifyTargetGroupInput) SetHealthCheckProtocol(v string) *ModifyTargetGroupInput {
6043	s.HealthCheckProtocol = &v
6044	return s
6045}
6046
6047// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
6048func (s *ModifyTargetGroupInput) SetHealthCheckTimeoutSeconds(v int64) *ModifyTargetGroupInput {
6049	s.HealthCheckTimeoutSeconds = &v
6050	return s
6051}
6052
6053// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
6054func (s *ModifyTargetGroupInput) SetHealthyThresholdCount(v int64) *ModifyTargetGroupInput {
6055	s.HealthyThresholdCount = &v
6056	return s
6057}
6058
6059// SetMatcher sets the Matcher field's value.
6060func (s *ModifyTargetGroupInput) SetMatcher(v *Matcher) *ModifyTargetGroupInput {
6061	s.Matcher = v
6062	return s
6063}
6064
6065// SetTargetGroupArn sets the TargetGroupArn field's value.
6066func (s *ModifyTargetGroupInput) SetTargetGroupArn(v string) *ModifyTargetGroupInput {
6067	s.TargetGroupArn = &v
6068	return s
6069}
6070
6071// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
6072func (s *ModifyTargetGroupInput) SetUnhealthyThresholdCount(v int64) *ModifyTargetGroupInput {
6073	s.UnhealthyThresholdCount = &v
6074	return s
6075}
6076
6077// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupOutput
6078type ModifyTargetGroupOutput struct {
6079	_ struct{} `type:"structure"`
6080
6081	// Information about the target group.
6082	TargetGroups []*TargetGroup `type:"list"`
6083}
6084
6085// String returns the string representation
6086func (s ModifyTargetGroupOutput) String() string {
6087	return awsutil.Prettify(s)
6088}
6089
6090// GoString returns the string representation
6091func (s ModifyTargetGroupOutput) GoString() string {
6092	return s.String()
6093}
6094
6095// SetTargetGroups sets the TargetGroups field's value.
6096func (s *ModifyTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *ModifyTargetGroupOutput {
6097	s.TargetGroups = v
6098	return s
6099}
6100
6101// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargetsInput
6102type RegisterTargetsInput struct {
6103	_ struct{} `type:"structure"`
6104
6105	// The Amazon Resource Name (ARN) of the target group.
6106	//
6107	// TargetGroupArn is a required field
6108	TargetGroupArn *string `type:"string" required:"true"`
6109
6110	// The targets. The default port for a target is the port for the target group.
6111	// You can specify a port override. If a target is already registered, you can
6112	// register it again using a different port.
6113	//
6114	// Targets is a required field
6115	Targets []*TargetDescription `type:"list" required:"true"`
6116}
6117
6118// String returns the string representation
6119func (s RegisterTargetsInput) String() string {
6120	return awsutil.Prettify(s)
6121}
6122
6123// GoString returns the string representation
6124func (s RegisterTargetsInput) GoString() string {
6125	return s.String()
6126}
6127
6128// Validate inspects the fields of the type to determine if they are valid.
6129func (s *RegisterTargetsInput) Validate() error {
6130	invalidParams := request.ErrInvalidParams{Context: "RegisterTargetsInput"}
6131	if s.TargetGroupArn == nil {
6132		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
6133	}
6134	if s.Targets == nil {
6135		invalidParams.Add(request.NewErrParamRequired("Targets"))
6136	}
6137	if s.Targets != nil {
6138		for i, v := range s.Targets {
6139			if v == nil {
6140				continue
6141			}
6142			if err := v.Validate(); err != nil {
6143				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
6144			}
6145		}
6146	}
6147
6148	if invalidParams.Len() > 0 {
6149		return invalidParams
6150	}
6151	return nil
6152}
6153
6154// SetTargetGroupArn sets the TargetGroupArn field's value.
6155func (s *RegisterTargetsInput) SetTargetGroupArn(v string) *RegisterTargetsInput {
6156	s.TargetGroupArn = &v
6157	return s
6158}
6159
6160// SetTargets sets the Targets field's value.
6161func (s *RegisterTargetsInput) SetTargets(v []*TargetDescription) *RegisterTargetsInput {
6162	s.Targets = v
6163	return s
6164}
6165
6166// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargetsOutput
6167type RegisterTargetsOutput struct {
6168	_ struct{} `type:"structure"`
6169}
6170
6171// String returns the string representation
6172func (s RegisterTargetsOutput) String() string {
6173	return awsutil.Prettify(s)
6174}
6175
6176// GoString returns the string representation
6177func (s RegisterTargetsOutput) GoString() string {
6178	return s.String()
6179}
6180
6181// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTagsInput
6182type RemoveTagsInput struct {
6183	_ struct{} `type:"structure"`
6184
6185	// The Amazon Resource Name (ARN) of the resource.
6186	//
6187	// ResourceArns is a required field
6188	ResourceArns []*string `type:"list" required:"true"`
6189
6190	// The tag keys for the tags to remove.
6191	//
6192	// TagKeys is a required field
6193	TagKeys []*string `type:"list" required:"true"`
6194}
6195
6196// String returns the string representation
6197func (s RemoveTagsInput) String() string {
6198	return awsutil.Prettify(s)
6199}
6200
6201// GoString returns the string representation
6202func (s RemoveTagsInput) GoString() string {
6203	return s.String()
6204}
6205
6206// Validate inspects the fields of the type to determine if they are valid.
6207func (s *RemoveTagsInput) Validate() error {
6208	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsInput"}
6209	if s.ResourceArns == nil {
6210		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
6211	}
6212	if s.TagKeys == nil {
6213		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
6214	}
6215
6216	if invalidParams.Len() > 0 {
6217		return invalidParams
6218	}
6219	return nil
6220}
6221
6222// SetResourceArns sets the ResourceArns field's value.
6223func (s *RemoveTagsInput) SetResourceArns(v []*string) *RemoveTagsInput {
6224	s.ResourceArns = v
6225	return s
6226}
6227
6228// SetTagKeys sets the TagKeys field's value.
6229func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput {
6230	s.TagKeys = v
6231	return s
6232}
6233
6234// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTagsOutput
6235type RemoveTagsOutput struct {
6236	_ struct{} `type:"structure"`
6237}
6238
6239// String returns the string representation
6240func (s RemoveTagsOutput) String() string {
6241	return awsutil.Prettify(s)
6242}
6243
6244// GoString returns the string representation
6245func (s RemoveTagsOutput) GoString() string {
6246	return s.String()
6247}
6248
6249// Information about a rule.
6250// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Rule
6251type Rule struct {
6252	_ struct{} `type:"structure"`
6253
6254	// The actions.
6255	Actions []*Action `type:"list"`
6256
6257	// The conditions.
6258	Conditions []*RuleCondition `type:"list"`
6259
6260	// Indicates whether this is the default rule.
6261	IsDefault *bool `type:"boolean"`
6262
6263	// The priority.
6264	Priority *string `type:"string"`
6265
6266	// The Amazon Resource Name (ARN) of the rule.
6267	RuleArn *string `type:"string"`
6268}
6269
6270// String returns the string representation
6271func (s Rule) String() string {
6272	return awsutil.Prettify(s)
6273}
6274
6275// GoString returns the string representation
6276func (s Rule) GoString() string {
6277	return s.String()
6278}
6279
6280// SetActions sets the Actions field's value.
6281func (s *Rule) SetActions(v []*Action) *Rule {
6282	s.Actions = v
6283	return s
6284}
6285
6286// SetConditions sets the Conditions field's value.
6287func (s *Rule) SetConditions(v []*RuleCondition) *Rule {
6288	s.Conditions = v
6289	return s
6290}
6291
6292// SetIsDefault sets the IsDefault field's value.
6293func (s *Rule) SetIsDefault(v bool) *Rule {
6294	s.IsDefault = &v
6295	return s
6296}
6297
6298// SetPriority sets the Priority field's value.
6299func (s *Rule) SetPriority(v string) *Rule {
6300	s.Priority = &v
6301	return s
6302}
6303
6304// SetRuleArn sets the RuleArn field's value.
6305func (s *Rule) SetRuleArn(v string) *Rule {
6306	s.RuleArn = &v
6307	return s
6308}
6309
6310// Information about a condition for a rule.
6311// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RuleCondition
6312type RuleCondition struct {
6313	_ struct{} `type:"structure"`
6314
6315	// The name of the field. The possible values are host-header and path-pattern.
6316	Field *string `type:"string"`
6317
6318	// The condition value.
6319	//
6320	// If the field name is host-header, you can specify a single host name (for
6321	// example, my.example.com). A host name is case insensitive, can be up to 128
6322	// characters in length, and can contain any of the following characters. Note
6323	// that you can include up to three wildcard characters.
6324	//
6325	//    * A-Z, a-z, 0-9
6326	//
6327	//    * - .
6328	//
6329	//    * * (matches 0 or more characters)
6330	//
6331	//    * ? (matches exactly 1 character)
6332	//
6333	// If the field name is path-pattern, you can specify a single path pattern
6334	// (for example, /img/*). A path pattern is case sensitive, can be up to 128
6335	// characters in length, and can contain any of the following characters. Note
6336	// that you can include up to three wildcard characters.
6337	//
6338	//    * A-Z, a-z, 0-9
6339	//
6340	//    * _ - . $ / ~ " ' @ : +
6341	//
6342	//    * & (using &)
6343	//
6344	//    * * (matches 0 or more characters)
6345	//
6346	//    * ? (matches exactly 1 character)
6347	Values []*string `type:"list"`
6348}
6349
6350// String returns the string representation
6351func (s RuleCondition) String() string {
6352	return awsutil.Prettify(s)
6353}
6354
6355// GoString returns the string representation
6356func (s RuleCondition) GoString() string {
6357	return s.String()
6358}
6359
6360// SetField sets the Field field's value.
6361func (s *RuleCondition) SetField(v string) *RuleCondition {
6362	s.Field = &v
6363	return s
6364}
6365
6366// SetValues sets the Values field's value.
6367func (s *RuleCondition) SetValues(v []*string) *RuleCondition {
6368	s.Values = v
6369	return s
6370}
6371
6372// Information about the priorities for the rules for a listener.
6373// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RulePriorityPair
6374type RulePriorityPair struct {
6375	_ struct{} `type:"structure"`
6376
6377	// The rule priority.
6378	Priority *int64 `min:"1" type:"integer"`
6379
6380	// The Amazon Resource Name (ARN) of the rule.
6381	RuleArn *string `type:"string"`
6382}
6383
6384// String returns the string representation
6385func (s RulePriorityPair) String() string {
6386	return awsutil.Prettify(s)
6387}
6388
6389// GoString returns the string representation
6390func (s RulePriorityPair) GoString() string {
6391	return s.String()
6392}
6393
6394// Validate inspects the fields of the type to determine if they are valid.
6395func (s *RulePriorityPair) Validate() error {
6396	invalidParams := request.ErrInvalidParams{Context: "RulePriorityPair"}
6397	if s.Priority != nil && *s.Priority < 1 {
6398		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
6399	}
6400
6401	if invalidParams.Len() > 0 {
6402		return invalidParams
6403	}
6404	return nil
6405}
6406
6407// SetPriority sets the Priority field's value.
6408func (s *RulePriorityPair) SetPriority(v int64) *RulePriorityPair {
6409	s.Priority = &v
6410	return s
6411}
6412
6413// SetRuleArn sets the RuleArn field's value.
6414func (s *RulePriorityPair) SetRuleArn(v string) *RulePriorityPair {
6415	s.RuleArn = &v
6416	return s
6417}
6418
6419// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressTypeInput
6420type SetIpAddressTypeInput struct {
6421	_ struct{} `type:"structure"`
6422
6423	// The IP address type. The possible values are ipv4 (for IPv4 addresses) and
6424	// dualstack (for IPv4 and IPv6 addresses). Internal load balancers must use
6425	// ipv4.
6426	//
6427	// IpAddressType is a required field
6428	IpAddressType *string `type:"string" required:"true" enum:"IpAddressType"`
6429
6430	// The Amazon Resource Name (ARN) of the load balancer.
6431	//
6432	// LoadBalancerArn is a required field
6433	LoadBalancerArn *string `type:"string" required:"true"`
6434}
6435
6436// String returns the string representation
6437func (s SetIpAddressTypeInput) String() string {
6438	return awsutil.Prettify(s)
6439}
6440
6441// GoString returns the string representation
6442func (s SetIpAddressTypeInput) GoString() string {
6443	return s.String()
6444}
6445
6446// Validate inspects the fields of the type to determine if they are valid.
6447func (s *SetIpAddressTypeInput) Validate() error {
6448	invalidParams := request.ErrInvalidParams{Context: "SetIpAddressTypeInput"}
6449	if s.IpAddressType == nil {
6450		invalidParams.Add(request.NewErrParamRequired("IpAddressType"))
6451	}
6452	if s.LoadBalancerArn == nil {
6453		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
6454	}
6455
6456	if invalidParams.Len() > 0 {
6457		return invalidParams
6458	}
6459	return nil
6460}
6461
6462// SetIpAddressType sets the IpAddressType field's value.
6463func (s *SetIpAddressTypeInput) SetIpAddressType(v string) *SetIpAddressTypeInput {
6464	s.IpAddressType = &v
6465	return s
6466}
6467
6468// SetLoadBalancerArn sets the LoadBalancerArn field's value.
6469func (s *SetIpAddressTypeInput) SetLoadBalancerArn(v string) *SetIpAddressTypeInput {
6470	s.LoadBalancerArn = &v
6471	return s
6472}
6473
6474// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressTypeOutput
6475type SetIpAddressTypeOutput struct {
6476	_ struct{} `type:"structure"`
6477
6478	// The IP address type.
6479	IpAddressType *string `type:"string" enum:"IpAddressType"`
6480}
6481
6482// String returns the string representation
6483func (s SetIpAddressTypeOutput) String() string {
6484	return awsutil.Prettify(s)
6485}
6486
6487// GoString returns the string representation
6488func (s SetIpAddressTypeOutput) GoString() string {
6489	return s.String()
6490}
6491
6492// SetIpAddressType sets the IpAddressType field's value.
6493func (s *SetIpAddressTypeOutput) SetIpAddressType(v string) *SetIpAddressTypeOutput {
6494	s.IpAddressType = &v
6495	return s
6496}
6497
6498// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePrioritiesInput
6499type SetRulePrioritiesInput struct {
6500	_ struct{} `type:"structure"`
6501
6502	// The rule priorities.
6503	//
6504	// RulePriorities is a required field
6505	RulePriorities []*RulePriorityPair `type:"list" required:"true"`
6506}
6507
6508// String returns the string representation
6509func (s SetRulePrioritiesInput) String() string {
6510	return awsutil.Prettify(s)
6511}
6512
6513// GoString returns the string representation
6514func (s SetRulePrioritiesInput) GoString() string {
6515	return s.String()
6516}
6517
6518// Validate inspects the fields of the type to determine if they are valid.
6519func (s *SetRulePrioritiesInput) Validate() error {
6520	invalidParams := request.ErrInvalidParams{Context: "SetRulePrioritiesInput"}
6521	if s.RulePriorities == nil {
6522		invalidParams.Add(request.NewErrParamRequired("RulePriorities"))
6523	}
6524	if s.RulePriorities != nil {
6525		for i, v := range s.RulePriorities {
6526			if v == nil {
6527				continue
6528			}
6529			if err := v.Validate(); err != nil {
6530				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RulePriorities", i), err.(request.ErrInvalidParams))
6531			}
6532		}
6533	}
6534
6535	if invalidParams.Len() > 0 {
6536		return invalidParams
6537	}
6538	return nil
6539}
6540
6541// SetRulePriorities sets the RulePriorities field's value.
6542func (s *SetRulePrioritiesInput) SetRulePriorities(v []*RulePriorityPair) *SetRulePrioritiesInput {
6543	s.RulePriorities = v
6544	return s
6545}
6546
6547// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePrioritiesOutput
6548type SetRulePrioritiesOutput struct {
6549	_ struct{} `type:"structure"`
6550
6551	// Information about the rules.
6552	Rules []*Rule `type:"list"`
6553}
6554
6555// String returns the string representation
6556func (s SetRulePrioritiesOutput) String() string {
6557	return awsutil.Prettify(s)
6558}
6559
6560// GoString returns the string representation
6561func (s SetRulePrioritiesOutput) GoString() string {
6562	return s.String()
6563}
6564
6565// SetRules sets the Rules field's value.
6566func (s *SetRulePrioritiesOutput) SetRules(v []*Rule) *SetRulePrioritiesOutput {
6567	s.Rules = v
6568	return s
6569}
6570
6571// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroupsInput
6572type SetSecurityGroupsInput struct {
6573	_ struct{} `type:"structure"`
6574
6575	// The Amazon Resource Name (ARN) of the load balancer.
6576	//
6577	// LoadBalancerArn is a required field
6578	LoadBalancerArn *string `type:"string" required:"true"`
6579
6580	// The IDs of the security groups.
6581	//
6582	// SecurityGroups is a required field
6583	SecurityGroups []*string `type:"list" required:"true"`
6584}
6585
6586// String returns the string representation
6587func (s SetSecurityGroupsInput) String() string {
6588	return awsutil.Prettify(s)
6589}
6590
6591// GoString returns the string representation
6592func (s SetSecurityGroupsInput) GoString() string {
6593	return s.String()
6594}
6595
6596// Validate inspects the fields of the type to determine if they are valid.
6597func (s *SetSecurityGroupsInput) Validate() error {
6598	invalidParams := request.ErrInvalidParams{Context: "SetSecurityGroupsInput"}
6599	if s.LoadBalancerArn == nil {
6600		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
6601	}
6602	if s.SecurityGroups == nil {
6603		invalidParams.Add(request.NewErrParamRequired("SecurityGroups"))
6604	}
6605
6606	if invalidParams.Len() > 0 {
6607		return invalidParams
6608	}
6609	return nil
6610}
6611
6612// SetLoadBalancerArn sets the LoadBalancerArn field's value.
6613func (s *SetSecurityGroupsInput) SetLoadBalancerArn(v string) *SetSecurityGroupsInput {
6614	s.LoadBalancerArn = &v
6615	return s
6616}
6617
6618// SetSecurityGroups sets the SecurityGroups field's value.
6619func (s *SetSecurityGroupsInput) SetSecurityGroups(v []*string) *SetSecurityGroupsInput {
6620	s.SecurityGroups = v
6621	return s
6622}
6623
6624// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroupsOutput
6625type SetSecurityGroupsOutput struct {
6626	_ struct{} `type:"structure"`
6627
6628	// The IDs of the security groups associated with the load balancer.
6629	SecurityGroupIds []*string `type:"list"`
6630}
6631
6632// String returns the string representation
6633func (s SetSecurityGroupsOutput) String() string {
6634	return awsutil.Prettify(s)
6635}
6636
6637// GoString returns the string representation
6638func (s SetSecurityGroupsOutput) GoString() string {
6639	return s.String()
6640}
6641
6642// SetSecurityGroupIds sets the SecurityGroupIds field's value.
6643func (s *SetSecurityGroupsOutput) SetSecurityGroupIds(v []*string) *SetSecurityGroupsOutput {
6644	s.SecurityGroupIds = v
6645	return s
6646}
6647
6648// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnetsInput
6649type SetSubnetsInput struct {
6650	_ struct{} `type:"structure"`
6651
6652	// The Amazon Resource Name (ARN) of the load balancer.
6653	//
6654	// LoadBalancerArn is a required field
6655	LoadBalancerArn *string `type:"string" required:"true"`
6656
6657	// The IDs of the subnets. You must specify subnets from at least two Availability
6658	// Zones. You can specify only one subnet per Availability Zone. You must specify
6659	// either subnets or subnet mappings.
6660	//
6661	// The load balancer is allocated one static IP address per subnet. You cannot
6662	// specify your own Elastic IP addresses.
6663	SubnetMappings []*SubnetMapping `type:"list"`
6664
6665	// The IDs of the subnets. You must specify subnets from at least two Availability
6666	// Zones. You can specify only one subnet per Availability Zone. You must specify
6667	// either subnets or subnet mappings.
6668	//
6669	// Subnets is a required field
6670	Subnets []*string `type:"list" required:"true"`
6671}
6672
6673// String returns the string representation
6674func (s SetSubnetsInput) String() string {
6675	return awsutil.Prettify(s)
6676}
6677
6678// GoString returns the string representation
6679func (s SetSubnetsInput) GoString() string {
6680	return s.String()
6681}
6682
6683// Validate inspects the fields of the type to determine if they are valid.
6684func (s *SetSubnetsInput) Validate() error {
6685	invalidParams := request.ErrInvalidParams{Context: "SetSubnetsInput"}
6686	if s.LoadBalancerArn == nil {
6687		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
6688	}
6689	if s.Subnets == nil {
6690		invalidParams.Add(request.NewErrParamRequired("Subnets"))
6691	}
6692
6693	if invalidParams.Len() > 0 {
6694		return invalidParams
6695	}
6696	return nil
6697}
6698
6699// SetLoadBalancerArn sets the LoadBalancerArn field's value.
6700func (s *SetSubnetsInput) SetLoadBalancerArn(v string) *SetSubnetsInput {
6701	s.LoadBalancerArn = &v
6702	return s
6703}
6704
6705// SetSubnetMappings sets the SubnetMappings field's value.
6706func (s *SetSubnetsInput) SetSubnetMappings(v []*SubnetMapping) *SetSubnetsInput {
6707	s.SubnetMappings = v
6708	return s
6709}
6710
6711// SetSubnets sets the Subnets field's value.
6712func (s *SetSubnetsInput) SetSubnets(v []*string) *SetSubnetsInput {
6713	s.Subnets = v
6714	return s
6715}
6716
6717// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnetsOutput
6718type SetSubnetsOutput struct {
6719	_ struct{} `type:"structure"`
6720
6721	// Information about the subnet and Availability Zone.
6722	AvailabilityZones []*AvailabilityZone `type:"list"`
6723}
6724
6725// String returns the string representation
6726func (s SetSubnetsOutput) String() string {
6727	return awsutil.Prettify(s)
6728}
6729
6730// GoString returns the string representation
6731func (s SetSubnetsOutput) GoString() string {
6732	return s.String()
6733}
6734
6735// SetAvailabilityZones sets the AvailabilityZones field's value.
6736func (s *SetSubnetsOutput) SetAvailabilityZones(v []*AvailabilityZone) *SetSubnetsOutput {
6737	s.AvailabilityZones = v
6738	return s
6739}
6740
6741// Information about a policy used for SSL negotiation.
6742// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SslPolicy
6743type SslPolicy struct {
6744	_ struct{} `type:"structure"`
6745
6746	// The ciphers.
6747	Ciphers []*Cipher `type:"list"`
6748
6749	// The name of the policy.
6750	Name *string `type:"string"`
6751
6752	// The protocols.
6753	SslProtocols []*string `type:"list"`
6754}
6755
6756// String returns the string representation
6757func (s SslPolicy) String() string {
6758	return awsutil.Prettify(s)
6759}
6760
6761// GoString returns the string representation
6762func (s SslPolicy) GoString() string {
6763	return s.String()
6764}
6765
6766// SetCiphers sets the Ciphers field's value.
6767func (s *SslPolicy) SetCiphers(v []*Cipher) *SslPolicy {
6768	s.Ciphers = v
6769	return s
6770}
6771
6772// SetName sets the Name field's value.
6773func (s *SslPolicy) SetName(v string) *SslPolicy {
6774	s.Name = &v
6775	return s
6776}
6777
6778// SetSslProtocols sets the SslProtocols field's value.
6779func (s *SslPolicy) SetSslProtocols(v []*string) *SslPolicy {
6780	s.SslProtocols = v
6781	return s
6782}
6783
6784// Information about a subnet mapping.
6785// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SubnetMapping
6786type SubnetMapping struct {
6787	_ struct{} `type:"structure"`
6788
6789	// [Network Load Balancers] The allocation ID of the Elastic IP address.
6790	AllocationId *string `type:"string"`
6791
6792	// The ID of the subnet.
6793	SubnetId *string `type:"string"`
6794}
6795
6796// String returns the string representation
6797func (s SubnetMapping) String() string {
6798	return awsutil.Prettify(s)
6799}
6800
6801// GoString returns the string representation
6802func (s SubnetMapping) GoString() string {
6803	return s.String()
6804}
6805
6806// SetAllocationId sets the AllocationId field's value.
6807func (s *SubnetMapping) SetAllocationId(v string) *SubnetMapping {
6808	s.AllocationId = &v
6809	return s
6810}
6811
6812// SetSubnetId sets the SubnetId field's value.
6813func (s *SubnetMapping) SetSubnetId(v string) *SubnetMapping {
6814	s.SubnetId = &v
6815	return s
6816}
6817
6818// Information about a tag.
6819// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/Tag
6820type Tag struct {
6821	_ struct{} `type:"structure"`
6822
6823	// The key of the tag.
6824	//
6825	// Key is a required field
6826	Key *string `min:"1" type:"string" required:"true"`
6827
6828	// The value of the tag.
6829	Value *string `type:"string"`
6830}
6831
6832// String returns the string representation
6833func (s Tag) String() string {
6834	return awsutil.Prettify(s)
6835}
6836
6837// GoString returns the string representation
6838func (s Tag) GoString() string {
6839	return s.String()
6840}
6841
6842// Validate inspects the fields of the type to determine if they are valid.
6843func (s *Tag) Validate() error {
6844	invalidParams := request.ErrInvalidParams{Context: "Tag"}
6845	if s.Key == nil {
6846		invalidParams.Add(request.NewErrParamRequired("Key"))
6847	}
6848	if s.Key != nil && len(*s.Key) < 1 {
6849		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
6850	}
6851
6852	if invalidParams.Len() > 0 {
6853		return invalidParams
6854	}
6855	return nil
6856}
6857
6858// SetKey sets the Key field's value.
6859func (s *Tag) SetKey(v string) *Tag {
6860	s.Key = &v
6861	return s
6862}
6863
6864// SetValue sets the Value field's value.
6865func (s *Tag) SetValue(v string) *Tag {
6866	s.Value = &v
6867	return s
6868}
6869
6870// The tags associated with a resource.
6871// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TagDescription
6872type TagDescription struct {
6873	_ struct{} `type:"structure"`
6874
6875	// The Amazon Resource Name (ARN) of the resource.
6876	ResourceArn *string `type:"string"`
6877
6878	// Information about the tags.
6879	Tags []*Tag `min:"1" type:"list"`
6880}
6881
6882// String returns the string representation
6883func (s TagDescription) String() string {
6884	return awsutil.Prettify(s)
6885}
6886
6887// GoString returns the string representation
6888func (s TagDescription) GoString() string {
6889	return s.String()
6890}
6891
6892// SetResourceArn sets the ResourceArn field's value.
6893func (s *TagDescription) SetResourceArn(v string) *TagDescription {
6894	s.ResourceArn = &v
6895	return s
6896}
6897
6898// SetTags sets the Tags field's value.
6899func (s *TagDescription) SetTags(v []*Tag) *TagDescription {
6900	s.Tags = v
6901	return s
6902}
6903
6904// Information about a target.
6905// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetDescription
6906type TargetDescription struct {
6907	_ struct{} `type:"structure"`
6908
6909	// The Availability Zone where the IP address is to be registered. Specify all
6910	// to register an IP address outside the target group VPC with all Availability
6911	// Zones that are enabled for the load balancer.
6912	//
6913	// If the IP address is in a subnet of the VPC for the target group, the Availability
6914	// Zone is automatically detected and this parameter is optional.
6915	//
6916	// This parameter is not supported if the target type of the target group is
6917	// instance.
6918	AvailabilityZone *string `type:"string"`
6919
6920	// The ID of the target. If the target type of the target group is instance,
6921	// specify an instance ID. If the target type is ip, specify an IP address.
6922	//
6923	// Id is a required field
6924	Id *string `type:"string" required:"true"`
6925
6926	// The port on which the target is listening.
6927	Port *int64 `min:"1" type:"integer"`
6928}
6929
6930// String returns the string representation
6931func (s TargetDescription) String() string {
6932	return awsutil.Prettify(s)
6933}
6934
6935// GoString returns the string representation
6936func (s TargetDescription) GoString() string {
6937	return s.String()
6938}
6939
6940// Validate inspects the fields of the type to determine if they are valid.
6941func (s *TargetDescription) Validate() error {
6942	invalidParams := request.ErrInvalidParams{Context: "TargetDescription"}
6943	if s.Id == nil {
6944		invalidParams.Add(request.NewErrParamRequired("Id"))
6945	}
6946	if s.Port != nil && *s.Port < 1 {
6947		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
6948	}
6949
6950	if invalidParams.Len() > 0 {
6951		return invalidParams
6952	}
6953	return nil
6954}
6955
6956// SetAvailabilityZone sets the AvailabilityZone field's value.
6957func (s *TargetDescription) SetAvailabilityZone(v string) *TargetDescription {
6958	s.AvailabilityZone = &v
6959	return s
6960}
6961
6962// SetId sets the Id field's value.
6963func (s *TargetDescription) SetId(v string) *TargetDescription {
6964	s.Id = &v
6965	return s
6966}
6967
6968// SetPort sets the Port field's value.
6969func (s *TargetDescription) SetPort(v int64) *TargetDescription {
6970	s.Port = &v
6971	return s
6972}
6973
6974// Information about a target group.
6975// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetGroup
6976type TargetGroup struct {
6977	_ struct{} `type:"structure"`
6978
6979	// The approximate amount of time, in seconds, between health checks of an individual
6980	// target.
6981	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
6982
6983	// The destination for the health check request.
6984	HealthCheckPath *string `min:"1" type:"string"`
6985
6986	// The port to use to connect with the target.
6987	HealthCheckPort *string `type:"string"`
6988
6989	// The protocol to use to connect with the target.
6990	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
6991
6992	// The amount of time, in seconds, during which no response means a failed health
6993	// check.
6994	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
6995
6996	// The number of consecutive health checks successes required before considering
6997	// an unhealthy target healthy.
6998	HealthyThresholdCount *int64 `min:"2" type:"integer"`
6999
7000	// The Amazon Resource Names (ARN) of the load balancers that route traffic
7001	// to this target group.
7002	LoadBalancerArns []*string `type:"list"`
7003
7004	// The HTTP codes to use when checking for a successful response from a target.
7005	Matcher *Matcher `type:"structure"`
7006
7007	// The port on which the targets are listening.
7008	Port *int64 `min:"1" type:"integer"`
7009
7010	// The protocol to use for routing traffic to the targets.
7011	Protocol *string `type:"string" enum:"ProtocolEnum"`
7012
7013	// The Amazon Resource Name (ARN) of the target group.
7014	TargetGroupArn *string `type:"string"`
7015
7016	// The name of the target group.
7017	TargetGroupName *string `type:"string"`
7018
7019	// The type of target that you must specify when registering targets with this
7020	// target group. The possible values are instance (targets are specified by
7021	// instance ID) or ip (targets are specified by IP address).
7022	TargetType *string `type:"string" enum:"TargetTypeEnum"`
7023
7024	// The number of consecutive health check failures required before considering
7025	// the target unhealthy.
7026	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
7027
7028	// The ID of the VPC for the targets.
7029	VpcId *string `type:"string"`
7030}
7031
7032// String returns the string representation
7033func (s TargetGroup) String() string {
7034	return awsutil.Prettify(s)
7035}
7036
7037// GoString returns the string representation
7038func (s TargetGroup) GoString() string {
7039	return s.String()
7040}
7041
7042// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
7043func (s *TargetGroup) SetHealthCheckIntervalSeconds(v int64) *TargetGroup {
7044	s.HealthCheckIntervalSeconds = &v
7045	return s
7046}
7047
7048// SetHealthCheckPath sets the HealthCheckPath field's value.
7049func (s *TargetGroup) SetHealthCheckPath(v string) *TargetGroup {
7050	s.HealthCheckPath = &v
7051	return s
7052}
7053
7054// SetHealthCheckPort sets the HealthCheckPort field's value.
7055func (s *TargetGroup) SetHealthCheckPort(v string) *TargetGroup {
7056	s.HealthCheckPort = &v
7057	return s
7058}
7059
7060// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
7061func (s *TargetGroup) SetHealthCheckProtocol(v string) *TargetGroup {
7062	s.HealthCheckProtocol = &v
7063	return s
7064}
7065
7066// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
7067func (s *TargetGroup) SetHealthCheckTimeoutSeconds(v int64) *TargetGroup {
7068	s.HealthCheckTimeoutSeconds = &v
7069	return s
7070}
7071
7072// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
7073func (s *TargetGroup) SetHealthyThresholdCount(v int64) *TargetGroup {
7074	s.HealthyThresholdCount = &v
7075	return s
7076}
7077
7078// SetLoadBalancerArns sets the LoadBalancerArns field's value.
7079func (s *TargetGroup) SetLoadBalancerArns(v []*string) *TargetGroup {
7080	s.LoadBalancerArns = v
7081	return s
7082}
7083
7084// SetMatcher sets the Matcher field's value.
7085func (s *TargetGroup) SetMatcher(v *Matcher) *TargetGroup {
7086	s.Matcher = v
7087	return s
7088}
7089
7090// SetPort sets the Port field's value.
7091func (s *TargetGroup) SetPort(v int64) *TargetGroup {
7092	s.Port = &v
7093	return s
7094}
7095
7096// SetProtocol sets the Protocol field's value.
7097func (s *TargetGroup) SetProtocol(v string) *TargetGroup {
7098	s.Protocol = &v
7099	return s
7100}
7101
7102// SetTargetGroupArn sets the TargetGroupArn field's value.
7103func (s *TargetGroup) SetTargetGroupArn(v string) *TargetGroup {
7104	s.TargetGroupArn = &v
7105	return s
7106}
7107
7108// SetTargetGroupName sets the TargetGroupName field's value.
7109func (s *TargetGroup) SetTargetGroupName(v string) *TargetGroup {
7110	s.TargetGroupName = &v
7111	return s
7112}
7113
7114// SetTargetType sets the TargetType field's value.
7115func (s *TargetGroup) SetTargetType(v string) *TargetGroup {
7116	s.TargetType = &v
7117	return s
7118}
7119
7120// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
7121func (s *TargetGroup) SetUnhealthyThresholdCount(v int64) *TargetGroup {
7122	s.UnhealthyThresholdCount = &v
7123	return s
7124}
7125
7126// SetVpcId sets the VpcId field's value.
7127func (s *TargetGroup) SetVpcId(v string) *TargetGroup {
7128	s.VpcId = &v
7129	return s
7130}
7131
7132// Information about a target group attribute.
7133// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetGroupAttribute
7134type TargetGroupAttribute struct {
7135	_ struct{} `type:"structure"`
7136
7137	// The name of the attribute.
7138	//
7139	//    * deregistration_delay.timeout_seconds - The amount time for Elastic Load
7140	//    Balancing to wait before changing the state of a deregistering target
7141	//    from draining to unused. The range is 0-3600 seconds. The default value
7142	//    is 300 seconds.
7143	//
7144	//    * stickiness.enabled - [Application Load Balancers] Indicates whether
7145	//    sticky sessions are enabled. The value is true or false.
7146	//
7147	//    * stickiness.type - [Application Load Balancers] The type of sticky sessions.
7148	//    The possible value is lb_cookie.
7149	//
7150	//    * stickiness.lb_cookie.duration_seconds - [Application Load Balancers]
7151	//    The time period, in seconds, during which requests from a client should
7152	//    be routed to the same target. After this time period expires, the load
7153	//    balancer-generated cookie is considered stale. The range is 1 second to
7154	//    1 week (604800 seconds). The default value is 1 day (86400 seconds).
7155	Key *string `type:"string"`
7156
7157	// The value of the attribute.
7158	Value *string `type:"string"`
7159}
7160
7161// String returns the string representation
7162func (s TargetGroupAttribute) String() string {
7163	return awsutil.Prettify(s)
7164}
7165
7166// GoString returns the string representation
7167func (s TargetGroupAttribute) GoString() string {
7168	return s.String()
7169}
7170
7171// SetKey sets the Key field's value.
7172func (s *TargetGroupAttribute) SetKey(v string) *TargetGroupAttribute {
7173	s.Key = &v
7174	return s
7175}
7176
7177// SetValue sets the Value field's value.
7178func (s *TargetGroupAttribute) SetValue(v string) *TargetGroupAttribute {
7179	s.Value = &v
7180	return s
7181}
7182
7183// Information about the current health of a target.
7184// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetHealth
7185type TargetHealth struct {
7186	_ struct{} `type:"structure"`
7187
7188	// A description of the target health that provides additional details. If the
7189	// state is healthy, a description is not provided.
7190	Description *string `type:"string"`
7191
7192	// The reason code. If the target state is healthy, a reason code is not provided.
7193	//
7194	// If the target state is initial, the reason code can be one of the following
7195	// values:
7196	//
7197	//    * Elb.RegistrationInProgress - The target is in the process of being registered
7198	//    with the load balancer.
7199	//
7200	//    * Elb.InitialHealthChecking - The load balancer is still sending the target
7201	//    the minimum number of health checks required to determine its health status.
7202	//
7203	// If the target state is unhealthy, the reason code can be one of the following
7204	// values:
7205	//
7206	//    * Target.ResponseCodeMismatch - The health checks did not return an expected
7207	//    HTTP code.
7208	//
7209	//    * Target.Timeout - The health check requests timed out.
7210	//
7211	//    * Target.FailedHealthChecks - The health checks failed because the connection
7212	//    to the target timed out, the target response was malformed, or the target
7213	//    failed the health check for an unknown reason.
7214	//
7215	//    * Elb.InternalError - The health checks failed due to an internal error.
7216	//
7217	// If the target state is unused, the reason code can be one of the following
7218	// values:
7219	//
7220	//    * Target.NotRegistered - The target is not registered with the target
7221	//    group.
7222	//
7223	//    * Target.NotInUse - The target group is not used by any load balancer
7224	//    or the target is in an Availability Zone that is not enabled for its load
7225	//    balancer.
7226	//
7227	//    * Target.IpUnusable - The target IP address is reserved for use by a load
7228	//    balancer.
7229	//
7230	//    * Target.InvalidState - The target is in the stopped or terminated state.
7231	//
7232	// If the target state is draining, the reason code can be the following value:
7233	//
7234	//    * Target.DeregistrationInProgress - The target is in the process of being
7235	//    deregistered and the deregistration delay period has not expired.
7236	Reason *string `type:"string" enum:"TargetHealthReasonEnum"`
7237
7238	// The state of the target.
7239	State *string `type:"string" enum:"TargetHealthStateEnum"`
7240}
7241
7242// String returns the string representation
7243func (s TargetHealth) String() string {
7244	return awsutil.Prettify(s)
7245}
7246
7247// GoString returns the string representation
7248func (s TargetHealth) GoString() string {
7249	return s.String()
7250}
7251
7252// SetDescription sets the Description field's value.
7253func (s *TargetHealth) SetDescription(v string) *TargetHealth {
7254	s.Description = &v
7255	return s
7256}
7257
7258// SetReason sets the Reason field's value.
7259func (s *TargetHealth) SetReason(v string) *TargetHealth {
7260	s.Reason = &v
7261	return s
7262}
7263
7264// SetState sets the State field's value.
7265func (s *TargetHealth) SetState(v string) *TargetHealth {
7266	s.State = &v
7267	return s
7268}
7269
7270// Information about the health of a target.
7271// Please also see https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/TargetHealthDescription
7272type TargetHealthDescription struct {
7273	_ struct{} `type:"structure"`
7274
7275	// The port to use to connect with the target.
7276	HealthCheckPort *string `type:"string"`
7277
7278	// The description of the target.
7279	Target *TargetDescription `type:"structure"`
7280
7281	// The health information for the target.
7282	TargetHealth *TargetHealth `type:"structure"`
7283}
7284
7285// String returns the string representation
7286func (s TargetHealthDescription) String() string {
7287	return awsutil.Prettify(s)
7288}
7289
7290// GoString returns the string representation
7291func (s TargetHealthDescription) GoString() string {
7292	return s.String()
7293}
7294
7295// SetHealthCheckPort sets the HealthCheckPort field's value.
7296func (s *TargetHealthDescription) SetHealthCheckPort(v string) *TargetHealthDescription {
7297	s.HealthCheckPort = &v
7298	return s
7299}
7300
7301// SetTarget sets the Target field's value.
7302func (s *TargetHealthDescription) SetTarget(v *TargetDescription) *TargetHealthDescription {
7303	s.Target = v
7304	return s
7305}
7306
7307// SetTargetHealth sets the TargetHealth field's value.
7308func (s *TargetHealthDescription) SetTargetHealth(v *TargetHealth) *TargetHealthDescription {
7309	s.TargetHealth = v
7310	return s
7311}
7312
7313const (
7314	// ActionTypeEnumForward is a ActionTypeEnum enum value
7315	ActionTypeEnumForward = "forward"
7316)
7317
7318const (
7319	// IpAddressTypeIpv4 is a IpAddressType enum value
7320	IpAddressTypeIpv4 = "ipv4"
7321
7322	// IpAddressTypeDualstack is a IpAddressType enum value
7323	IpAddressTypeDualstack = "dualstack"
7324)
7325
7326const (
7327	// LoadBalancerSchemeEnumInternetFacing is a LoadBalancerSchemeEnum enum value
7328	LoadBalancerSchemeEnumInternetFacing = "internet-facing"
7329
7330	// LoadBalancerSchemeEnumInternal is a LoadBalancerSchemeEnum enum value
7331	LoadBalancerSchemeEnumInternal = "internal"
7332)
7333
7334const (
7335	// LoadBalancerStateEnumActive is a LoadBalancerStateEnum enum value
7336	LoadBalancerStateEnumActive = "active"
7337
7338	// LoadBalancerStateEnumProvisioning is a LoadBalancerStateEnum enum value
7339	LoadBalancerStateEnumProvisioning = "provisioning"
7340
7341	// LoadBalancerStateEnumActiveImpaired is a LoadBalancerStateEnum enum value
7342	LoadBalancerStateEnumActiveImpaired = "active_impaired"
7343
7344	// LoadBalancerStateEnumFailed is a LoadBalancerStateEnum enum value
7345	LoadBalancerStateEnumFailed = "failed"
7346)
7347
7348const (
7349	// LoadBalancerTypeEnumApplication is a LoadBalancerTypeEnum enum value
7350	LoadBalancerTypeEnumApplication = "application"
7351
7352	// LoadBalancerTypeEnumNetwork is a LoadBalancerTypeEnum enum value
7353	LoadBalancerTypeEnumNetwork = "network"
7354)
7355
7356const (
7357	// ProtocolEnumHttp is a ProtocolEnum enum value
7358	ProtocolEnumHttp = "HTTP"
7359
7360	// ProtocolEnumHttps is a ProtocolEnum enum value
7361	ProtocolEnumHttps = "HTTPS"
7362
7363	// ProtocolEnumTcp is a ProtocolEnum enum value
7364	ProtocolEnumTcp = "TCP"
7365)
7366
7367const (
7368	// TargetHealthReasonEnumElbRegistrationInProgress is a TargetHealthReasonEnum enum value
7369	TargetHealthReasonEnumElbRegistrationInProgress = "Elb.RegistrationInProgress"
7370
7371	// TargetHealthReasonEnumElbInitialHealthChecking is a TargetHealthReasonEnum enum value
7372	TargetHealthReasonEnumElbInitialHealthChecking = "Elb.InitialHealthChecking"
7373
7374	// TargetHealthReasonEnumTargetResponseCodeMismatch is a TargetHealthReasonEnum enum value
7375	TargetHealthReasonEnumTargetResponseCodeMismatch = "Target.ResponseCodeMismatch"
7376
7377	// TargetHealthReasonEnumTargetTimeout is a TargetHealthReasonEnum enum value
7378	TargetHealthReasonEnumTargetTimeout = "Target.Timeout"
7379
7380	// TargetHealthReasonEnumTargetFailedHealthChecks is a TargetHealthReasonEnum enum value
7381	TargetHealthReasonEnumTargetFailedHealthChecks = "Target.FailedHealthChecks"
7382
7383	// TargetHealthReasonEnumTargetNotRegistered is a TargetHealthReasonEnum enum value
7384	TargetHealthReasonEnumTargetNotRegistered = "Target.NotRegistered"
7385
7386	// TargetHealthReasonEnumTargetNotInUse is a TargetHealthReasonEnum enum value
7387	TargetHealthReasonEnumTargetNotInUse = "Target.NotInUse"
7388
7389	// TargetHealthReasonEnumTargetDeregistrationInProgress is a TargetHealthReasonEnum enum value
7390	TargetHealthReasonEnumTargetDeregistrationInProgress = "Target.DeregistrationInProgress"
7391
7392	// TargetHealthReasonEnumTargetInvalidState is a TargetHealthReasonEnum enum value
7393	TargetHealthReasonEnumTargetInvalidState = "Target.InvalidState"
7394
7395	// TargetHealthReasonEnumTargetIpUnusable is a TargetHealthReasonEnum enum value
7396	TargetHealthReasonEnumTargetIpUnusable = "Target.IpUnusable"
7397
7398	// TargetHealthReasonEnumElbInternalError is a TargetHealthReasonEnum enum value
7399	TargetHealthReasonEnumElbInternalError = "Elb.InternalError"
7400)
7401
7402const (
7403	// TargetHealthStateEnumInitial is a TargetHealthStateEnum enum value
7404	TargetHealthStateEnumInitial = "initial"
7405
7406	// TargetHealthStateEnumHealthy is a TargetHealthStateEnum enum value
7407	TargetHealthStateEnumHealthy = "healthy"
7408
7409	// TargetHealthStateEnumUnhealthy is a TargetHealthStateEnum enum value
7410	TargetHealthStateEnumUnhealthy = "unhealthy"
7411
7412	// TargetHealthStateEnumUnused is a TargetHealthStateEnum enum value
7413	TargetHealthStateEnumUnused = "unused"
7414
7415	// TargetHealthStateEnumDraining is a TargetHealthStateEnum enum value
7416	TargetHealthStateEnumDraining = "draining"
7417
7418	// TargetHealthStateEnumUnavailable is a TargetHealthStateEnum enum value
7419	TargetHealthStateEnumUnavailable = "unavailable"
7420)
7421
7422const (
7423	// TargetTypeEnumInstance is a TargetTypeEnum enum value
7424	TargetTypeEnumInstance = "instance"
7425
7426	// TargetTypeEnumIp is a TargetTypeEnum enum value
7427	TargetTypeEnumIp = "ip"
7428)
7429