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	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/query"
14)
15
16const opAddListenerCertificates = "AddListenerCertificates"
17
18// AddListenerCertificatesRequest generates a "aws/request.Request" representing the
19// client's request for the AddListenerCertificates operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See AddListenerCertificates for more information on using the AddListenerCertificates
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the AddListenerCertificatesRequest method.
34//    req, resp := client.AddListenerCertificatesRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddListenerCertificates
42func (c *ELBV2) AddListenerCertificatesRequest(input *AddListenerCertificatesInput) (req *request.Request, output *AddListenerCertificatesOutput) {
43	op := &request.Operation{
44		Name:       opAddListenerCertificates,
45		HTTPMethod: "POST",
46		HTTPPath:   "/",
47	}
48
49	if input == nil {
50		input = &AddListenerCertificatesInput{}
51	}
52
53	output = &AddListenerCertificatesOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// AddListenerCertificates API operation for Elastic Load Balancing.
59//
60// Adds the specified SSL server certificate to the certificate list for the
61// specified HTTPS or TLS listener.
62//
63// If the certificate in already in the certificate list, the call is successful
64// but the certificate is not added again.
65//
66// For more information, see HTTPS listeners (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
67// in the Application Load Balancers Guide or TLS listeners (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html)
68// in the Network Load Balancers Guide.
69//
70// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
71// with awserr.Error's Code and Message methods to get detailed information about
72// the error.
73//
74// See the AWS API reference guide for Elastic Load Balancing's
75// API operation AddListenerCertificates for usage and error information.
76//
77// Returned Error Codes:
78//   * ErrCodeListenerNotFoundException "ListenerNotFound"
79//   The specified listener does not exist.
80//
81//   * ErrCodeTooManyCertificatesException "TooManyCertificates"
82//   You've reached the limit on the number of certificates per load balancer.
83//
84//   * ErrCodeCertificateNotFoundException "CertificateNotFound"
85//   The specified certificate does not exist.
86//
87// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddListenerCertificates
88func (c *ELBV2) AddListenerCertificates(input *AddListenerCertificatesInput) (*AddListenerCertificatesOutput, error) {
89	req, out := c.AddListenerCertificatesRequest(input)
90	return out, req.Send()
91}
92
93// AddListenerCertificatesWithContext is the same as AddListenerCertificates with the addition of
94// the ability to pass a context and additional request options.
95//
96// See AddListenerCertificates for details on how to use this API operation.
97//
98// The context must be non-nil and will be used for request cancellation. If
99// the context is nil a panic will occur. In the future the SDK may create
100// sub-contexts for http.Requests. See https://golang.org/pkg/context/
101// for more information on using Contexts.
102func (c *ELBV2) AddListenerCertificatesWithContext(ctx aws.Context, input *AddListenerCertificatesInput, opts ...request.Option) (*AddListenerCertificatesOutput, error) {
103	req, out := c.AddListenerCertificatesRequest(input)
104	req.SetContext(ctx)
105	req.ApplyOptions(opts...)
106	return out, req.Send()
107}
108
109const opAddTags = "AddTags"
110
111// AddTagsRequest generates a "aws/request.Request" representing the
112// client's request for the AddTags operation. The "output" return
113// value will be populated with the request's response once the request completes
114// successfully.
115//
116// Use "Send" method on the returned Request to send the API call to the service.
117// the "output" return value is not valid until after Send returns without error.
118//
119// See AddTags for more information on using the AddTags
120// API call, and error handling.
121//
122// This method is useful when you want to inject custom logic or configuration
123// into the SDK's request lifecycle. Such as custom headers, or retry logic.
124//
125//
126//    // Example sending a request using the AddTagsRequest method.
127//    req, resp := client.AddTagsRequest(params)
128//
129//    err := req.Send()
130//    if err == nil { // resp is now filled
131//        fmt.Println(resp)
132//    }
133//
134// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags
135func (c *ELBV2) AddTagsRequest(input *AddTagsInput) (req *request.Request, output *AddTagsOutput) {
136	op := &request.Operation{
137		Name:       opAddTags,
138		HTTPMethod: "POST",
139		HTTPPath:   "/",
140	}
141
142	if input == nil {
143		input = &AddTagsInput{}
144	}
145
146	output = &AddTagsOutput{}
147	req = c.newRequest(op, input, output)
148	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
149	return
150}
151
152// AddTags API operation for Elastic Load Balancing.
153//
154// Adds the specified tags to the specified Elastic Load Balancing resource.
155// You can tag your Application Load Balancers, Network Load Balancers, Gateway
156// Load Balancers, target groups, listeners, and rules.
157//
158// Each tag consists of a key and an optional value. If a resource already has
159// a tag with the same key, AddTags updates its value.
160//
161// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
162// with awserr.Error's Code and Message methods to get detailed information about
163// the error.
164//
165// See the AWS API reference guide for Elastic Load Balancing's
166// API operation AddTags for usage and error information.
167//
168// Returned Error Codes:
169//   * ErrCodeDuplicateTagKeysException "DuplicateTagKeys"
170//   A tag key was specified more than once.
171//
172//   * ErrCodeTooManyTagsException "TooManyTags"
173//   You've reached the limit on the number of tags per load balancer.
174//
175//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
176//   The specified load balancer does not exist.
177//
178//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
179//   The specified target group does not exist.
180//
181//   * ErrCodeListenerNotFoundException "ListenerNotFound"
182//   The specified listener does not exist.
183//
184//   * ErrCodeRuleNotFoundException "RuleNotFound"
185//   The specified rule does not exist.
186//
187// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/AddTags
188func (c *ELBV2) AddTags(input *AddTagsInput) (*AddTagsOutput, error) {
189	req, out := c.AddTagsRequest(input)
190	return out, req.Send()
191}
192
193// AddTagsWithContext is the same as AddTags with the addition of
194// the ability to pass a context and additional request options.
195//
196// See AddTags for details on how to use this API operation.
197//
198// The context must be non-nil and will be used for request cancellation. If
199// the context is nil a panic will occur. In the future the SDK may create
200// sub-contexts for http.Requests. See https://golang.org/pkg/context/
201// for more information on using Contexts.
202func (c *ELBV2) AddTagsWithContext(ctx aws.Context, input *AddTagsInput, opts ...request.Option) (*AddTagsOutput, error) {
203	req, out := c.AddTagsRequest(input)
204	req.SetContext(ctx)
205	req.ApplyOptions(opts...)
206	return out, req.Send()
207}
208
209const opCreateListener = "CreateListener"
210
211// CreateListenerRequest generates a "aws/request.Request" representing the
212// client's request for the CreateListener operation. The "output" return
213// value will be populated with the request's response once the request completes
214// successfully.
215//
216// Use "Send" method on the returned Request to send the API call to the service.
217// the "output" return value is not valid until after Send returns without error.
218//
219// See CreateListener for more information on using the CreateListener
220// API call, and error handling.
221//
222// This method is useful when you want to inject custom logic or configuration
223// into the SDK's request lifecycle. Such as custom headers, or retry logic.
224//
225//
226//    // Example sending a request using the CreateListenerRequest method.
227//    req, resp := client.CreateListenerRequest(params)
228//
229//    err := req.Send()
230//    if err == nil { // resp is now filled
231//        fmt.Println(resp)
232//    }
233//
234// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener
235func (c *ELBV2) CreateListenerRequest(input *CreateListenerInput) (req *request.Request, output *CreateListenerOutput) {
236	op := &request.Operation{
237		Name:       opCreateListener,
238		HTTPMethod: "POST",
239		HTTPPath:   "/",
240	}
241
242	if input == nil {
243		input = &CreateListenerInput{}
244	}
245
246	output = &CreateListenerOutput{}
247	req = c.newRequest(op, input, output)
248	return
249}
250
251// CreateListener API operation for Elastic Load Balancing.
252//
253// Creates a listener for the specified Application Load Balancer, Network Load
254// Balancer, or Gateway Load Balancer.
255//
256// For more information, see the following:
257//
258//    * Listeners for your Application Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html)
259//
260//    * Listeners for your Network Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html)
261//
262//    * Listeners for your Gateway Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/gateway-listeners.html)
263//
264// This operation is idempotent, which means that it completes at most one time.
265// If you attempt to create multiple listeners with the same settings, each
266// call succeeds.
267//
268// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
269// with awserr.Error's Code and Message methods to get detailed information about
270// the error.
271//
272// See the AWS API reference guide for Elastic Load Balancing's
273// API operation CreateListener for usage and error information.
274//
275// Returned Error Codes:
276//   * ErrCodeDuplicateListenerException "DuplicateListener"
277//   A listener with the specified port already exists.
278//
279//   * ErrCodeTooManyListenersException "TooManyListeners"
280//   You've reached the limit on the number of listeners per load balancer.
281//
282//   * ErrCodeTooManyCertificatesException "TooManyCertificates"
283//   You've reached the limit on the number of certificates per load balancer.
284//
285//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
286//   The specified load balancer does not exist.
287//
288//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
289//   The specified target group does not exist.
290//
291//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
292//   You've reached the limit on the number of load balancers per target group.
293//
294//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
295//   The requested configuration is not valid.
296//
297//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
298//   The specified configuration is not valid with this protocol.
299//
300//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
301//   The specified SSL policy does not exist.
302//
303//   * ErrCodeCertificateNotFoundException "CertificateNotFound"
304//   The specified certificate does not exist.
305//
306//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
307//   The specified protocol is not supported.
308//
309//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
310//   You've reached the limit on the number of times a target can be registered
311//   with a load balancer.
312//
313//   * ErrCodeTooManyTargetsException "TooManyTargets"
314//   You've reached the limit on the number of targets.
315//
316//   * ErrCodeTooManyActionsException "TooManyActions"
317//   You've reached the limit on the number of actions per rule.
318//
319//   * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction"
320//   The requested action is not valid.
321//
322//   * ErrCodeTooManyUniqueTargetGroupsPerLoadBalancerException "TooManyUniqueTargetGroupsPerLoadBalancer"
323//   You've reached the limit on the number of unique target groups per load balancer
324//   across all listeners. If a target group is used by multiple actions for a
325//   load balancer, it is counted as only one use.
326//
327//   * ErrCodeALPNPolicyNotSupportedException "ALPNPolicyNotFound"
328//   The specified ALPN policy is not supported.
329//
330//   * ErrCodeTooManyTagsException "TooManyTags"
331//   You've reached the limit on the number of tags per load balancer.
332//
333// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateListener
334func (c *ELBV2) CreateListener(input *CreateListenerInput) (*CreateListenerOutput, error) {
335	req, out := c.CreateListenerRequest(input)
336	return out, req.Send()
337}
338
339// CreateListenerWithContext is the same as CreateListener with the addition of
340// the ability to pass a context and additional request options.
341//
342// See CreateListener for details on how to use this API operation.
343//
344// The context must be non-nil and will be used for request cancellation. If
345// the context is nil a panic will occur. In the future the SDK may create
346// sub-contexts for http.Requests. See https://golang.org/pkg/context/
347// for more information on using Contexts.
348func (c *ELBV2) CreateListenerWithContext(ctx aws.Context, input *CreateListenerInput, opts ...request.Option) (*CreateListenerOutput, error) {
349	req, out := c.CreateListenerRequest(input)
350	req.SetContext(ctx)
351	req.ApplyOptions(opts...)
352	return out, req.Send()
353}
354
355const opCreateLoadBalancer = "CreateLoadBalancer"
356
357// CreateLoadBalancerRequest generates a "aws/request.Request" representing the
358// client's request for the CreateLoadBalancer operation. The "output" return
359// value will be populated with the request's response once the request completes
360// successfully.
361//
362// Use "Send" method on the returned Request to send the API call to the service.
363// the "output" return value is not valid until after Send returns without error.
364//
365// See CreateLoadBalancer for more information on using the CreateLoadBalancer
366// API call, and error handling.
367//
368// This method is useful when you want to inject custom logic or configuration
369// into the SDK's request lifecycle. Such as custom headers, or retry logic.
370//
371//
372//    // Example sending a request using the CreateLoadBalancerRequest method.
373//    req, resp := client.CreateLoadBalancerRequest(params)
374//
375//    err := req.Send()
376//    if err == nil { // resp is now filled
377//        fmt.Println(resp)
378//    }
379//
380// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer
381func (c *ELBV2) CreateLoadBalancerRequest(input *CreateLoadBalancerInput) (req *request.Request, output *CreateLoadBalancerOutput) {
382	op := &request.Operation{
383		Name:       opCreateLoadBalancer,
384		HTTPMethod: "POST",
385		HTTPPath:   "/",
386	}
387
388	if input == nil {
389		input = &CreateLoadBalancerInput{}
390	}
391
392	output = &CreateLoadBalancerOutput{}
393	req = c.newRequest(op, input, output)
394	return
395}
396
397// CreateLoadBalancer API operation for Elastic Load Balancing.
398//
399// Creates an Application Load Balancer, Network Load Balancer, or Gateway Load
400// Balancer.
401//
402// For more information, see the following:
403//
404//    * Application Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html)
405//
406//    * Network Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html)
407//
408//    * Gateway Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/gateway-load-balancers.html)
409//
410// This operation is idempotent, which means that it completes at most one time.
411// If you attempt to create multiple load balancers with the same settings,
412// each call succeeds.
413//
414// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
415// with awserr.Error's Code and Message methods to get detailed information about
416// the error.
417//
418// See the AWS API reference guide for Elastic Load Balancing's
419// API operation CreateLoadBalancer for usage and error information.
420//
421// Returned Error Codes:
422//   * ErrCodeDuplicateLoadBalancerNameException "DuplicateLoadBalancerName"
423//   A load balancer with the specified name already exists.
424//
425//   * ErrCodeTooManyLoadBalancersException "TooManyLoadBalancers"
426//   You've reached the limit on the number of load balancers for your Amazon
427//   Web Services account.
428//
429//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
430//   The requested configuration is not valid.
431//
432//   * ErrCodeSubnetNotFoundException "SubnetNotFound"
433//   The specified subnet does not exist.
434//
435//   * ErrCodeInvalidSubnetException "InvalidSubnet"
436//   The specified subnet is out of available addresses.
437//
438//   * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup"
439//   The specified security group does not exist.
440//
441//   * ErrCodeInvalidSchemeException "InvalidScheme"
442//   The requested scheme is not valid.
443//
444//   * ErrCodeTooManyTagsException "TooManyTags"
445//   You've reached the limit on the number of tags per load balancer.
446//
447//   * ErrCodeDuplicateTagKeysException "DuplicateTagKeys"
448//   A tag key was specified more than once.
449//
450//   * ErrCodeResourceInUseException "ResourceInUse"
451//   A specified resource is in use.
452//
453//   * ErrCodeAllocationIdNotFoundException "AllocationIdNotFound"
454//   The specified allocation ID does not exist.
455//
456//   * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported"
457//   The specified Availability Zone is not supported.
458//
459//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
460//   This operation is not allowed.
461//
462// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateLoadBalancer
463func (c *ELBV2) CreateLoadBalancer(input *CreateLoadBalancerInput) (*CreateLoadBalancerOutput, error) {
464	req, out := c.CreateLoadBalancerRequest(input)
465	return out, req.Send()
466}
467
468// CreateLoadBalancerWithContext is the same as CreateLoadBalancer with the addition of
469// the ability to pass a context and additional request options.
470//
471// See CreateLoadBalancer for details on how to use this API operation.
472//
473// The context must be non-nil and will be used for request cancellation. If
474// the context is nil a panic will occur. In the future the SDK may create
475// sub-contexts for http.Requests. See https://golang.org/pkg/context/
476// for more information on using Contexts.
477func (c *ELBV2) CreateLoadBalancerWithContext(ctx aws.Context, input *CreateLoadBalancerInput, opts ...request.Option) (*CreateLoadBalancerOutput, error) {
478	req, out := c.CreateLoadBalancerRequest(input)
479	req.SetContext(ctx)
480	req.ApplyOptions(opts...)
481	return out, req.Send()
482}
483
484const opCreateRule = "CreateRule"
485
486// CreateRuleRequest generates a "aws/request.Request" representing the
487// client's request for the CreateRule operation. The "output" return
488// value will be populated with the request's response once the request completes
489// successfully.
490//
491// Use "Send" method on the returned Request to send the API call to the service.
492// the "output" return value is not valid until after Send returns without error.
493//
494// See CreateRule for more information on using the CreateRule
495// API call, and error handling.
496//
497// This method is useful when you want to inject custom logic or configuration
498// into the SDK's request lifecycle. Such as custom headers, or retry logic.
499//
500//
501//    // Example sending a request using the CreateRuleRequest method.
502//    req, resp := client.CreateRuleRequest(params)
503//
504//    err := req.Send()
505//    if err == nil { // resp is now filled
506//        fmt.Println(resp)
507//    }
508//
509// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule
510func (c *ELBV2) CreateRuleRequest(input *CreateRuleInput) (req *request.Request, output *CreateRuleOutput) {
511	op := &request.Operation{
512		Name:       opCreateRule,
513		HTTPMethod: "POST",
514		HTTPPath:   "/",
515	}
516
517	if input == nil {
518		input = &CreateRuleInput{}
519	}
520
521	output = &CreateRuleOutput{}
522	req = c.newRequest(op, input, output)
523	return
524}
525
526// CreateRule API operation for Elastic Load Balancing.
527//
528// Creates a rule for the specified listener. The listener must be associated
529// with an Application Load Balancer.
530//
531// Each rule consists of a priority, one or more actions, and one or more conditions.
532// Rules are evaluated in priority order, from the lowest value to the highest
533// value. When the conditions for a rule are met, its actions are performed.
534// If the conditions for no rules are met, the actions for the default rule
535// are performed. For more information, see Listener rules (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules)
536// in the Application Load Balancers Guide.
537//
538// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
539// with awserr.Error's Code and Message methods to get detailed information about
540// the error.
541//
542// See the AWS API reference guide for Elastic Load Balancing's
543// API operation CreateRule for usage and error information.
544//
545// Returned Error Codes:
546//   * ErrCodePriorityInUseException "PriorityInUse"
547//   The specified priority is in use.
548//
549//   * ErrCodeTooManyTargetGroupsException "TooManyTargetGroups"
550//   You've reached the limit on the number of target groups for your Amazon Web
551//   Services account.
552//
553//   * ErrCodeTooManyRulesException "TooManyRules"
554//   You've reached the limit on the number of rules per load balancer.
555//
556//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
557//   You've reached the limit on the number of load balancers per target group.
558//
559//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
560//   The specified configuration is not valid with this protocol.
561//
562//   * ErrCodeListenerNotFoundException "ListenerNotFound"
563//   The specified listener does not exist.
564//
565//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
566//   The specified target group does not exist.
567//
568//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
569//   The requested configuration is not valid.
570//
571//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
572//   You've reached the limit on the number of times a target can be registered
573//   with a load balancer.
574//
575//   * ErrCodeTooManyTargetsException "TooManyTargets"
576//   You've reached the limit on the number of targets.
577//
578//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
579//   The specified protocol is not supported.
580//
581//   * ErrCodeTooManyActionsException "TooManyActions"
582//   You've reached the limit on the number of actions per rule.
583//
584//   * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction"
585//   The requested action is not valid.
586//
587//   * ErrCodeTooManyUniqueTargetGroupsPerLoadBalancerException "TooManyUniqueTargetGroupsPerLoadBalancer"
588//   You've reached the limit on the number of unique target groups per load balancer
589//   across all listeners. If a target group is used by multiple actions for a
590//   load balancer, it is counted as only one use.
591//
592//   * ErrCodeTooManyTagsException "TooManyTags"
593//   You've reached the limit on the number of tags per load balancer.
594//
595// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateRule
596func (c *ELBV2) CreateRule(input *CreateRuleInput) (*CreateRuleOutput, error) {
597	req, out := c.CreateRuleRequest(input)
598	return out, req.Send()
599}
600
601// CreateRuleWithContext is the same as CreateRule with the addition of
602// the ability to pass a context and additional request options.
603//
604// See CreateRule for details on how to use this API operation.
605//
606// The context must be non-nil and will be used for request cancellation. If
607// the context is nil a panic will occur. In the future the SDK may create
608// sub-contexts for http.Requests. See https://golang.org/pkg/context/
609// for more information on using Contexts.
610func (c *ELBV2) CreateRuleWithContext(ctx aws.Context, input *CreateRuleInput, opts ...request.Option) (*CreateRuleOutput, error) {
611	req, out := c.CreateRuleRequest(input)
612	req.SetContext(ctx)
613	req.ApplyOptions(opts...)
614	return out, req.Send()
615}
616
617const opCreateTargetGroup = "CreateTargetGroup"
618
619// CreateTargetGroupRequest generates a "aws/request.Request" representing the
620// client's request for the CreateTargetGroup operation. The "output" return
621// value will be populated with the request's response once the request completes
622// successfully.
623//
624// Use "Send" method on the returned Request to send the API call to the service.
625// the "output" return value is not valid until after Send returns without error.
626//
627// See CreateTargetGroup for more information on using the CreateTargetGroup
628// API call, and error handling.
629//
630// This method is useful when you want to inject custom logic or configuration
631// into the SDK's request lifecycle. Such as custom headers, or retry logic.
632//
633//
634//    // Example sending a request using the CreateTargetGroupRequest method.
635//    req, resp := client.CreateTargetGroupRequest(params)
636//
637//    err := req.Send()
638//    if err == nil { // resp is now filled
639//        fmt.Println(resp)
640//    }
641//
642// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup
643func (c *ELBV2) CreateTargetGroupRequest(input *CreateTargetGroupInput) (req *request.Request, output *CreateTargetGroupOutput) {
644	op := &request.Operation{
645		Name:       opCreateTargetGroup,
646		HTTPMethod: "POST",
647		HTTPPath:   "/",
648	}
649
650	if input == nil {
651		input = &CreateTargetGroupInput{}
652	}
653
654	output = &CreateTargetGroupOutput{}
655	req = c.newRequest(op, input, output)
656	return
657}
658
659// CreateTargetGroup API operation for Elastic Load Balancing.
660//
661// Creates a target group.
662//
663// For more information, see the following:
664//
665//    * Target groups for your Application Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html)
666//
667//    * Target groups for your Network Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html)
668//
669//    * Target groups for your Gateway Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/target-groups.html)
670//
671// This operation is idempotent, which means that it completes at most one time.
672// If you attempt to create multiple target groups with the same settings, each
673// call succeeds.
674//
675// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
676// with awserr.Error's Code and Message methods to get detailed information about
677// the error.
678//
679// See the AWS API reference guide for Elastic Load Balancing's
680// API operation CreateTargetGroup for usage and error information.
681//
682// Returned Error Codes:
683//   * ErrCodeDuplicateTargetGroupNameException "DuplicateTargetGroupName"
684//   A target group with the specified name already exists.
685//
686//   * ErrCodeTooManyTargetGroupsException "TooManyTargetGroups"
687//   You've reached the limit on the number of target groups for your Amazon Web
688//   Services account.
689//
690//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
691//   The requested configuration is not valid.
692//
693//   * ErrCodeTooManyTagsException "TooManyTags"
694//   You've reached the limit on the number of tags per load balancer.
695//
696// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/CreateTargetGroup
697func (c *ELBV2) CreateTargetGroup(input *CreateTargetGroupInput) (*CreateTargetGroupOutput, error) {
698	req, out := c.CreateTargetGroupRequest(input)
699	return out, req.Send()
700}
701
702// CreateTargetGroupWithContext is the same as CreateTargetGroup with the addition of
703// the ability to pass a context and additional request options.
704//
705// See CreateTargetGroup for details on how to use this API operation.
706//
707// The context must be non-nil and will be used for request cancellation. If
708// the context is nil a panic will occur. In the future the SDK may create
709// sub-contexts for http.Requests. See https://golang.org/pkg/context/
710// for more information on using Contexts.
711func (c *ELBV2) CreateTargetGroupWithContext(ctx aws.Context, input *CreateTargetGroupInput, opts ...request.Option) (*CreateTargetGroupOutput, error) {
712	req, out := c.CreateTargetGroupRequest(input)
713	req.SetContext(ctx)
714	req.ApplyOptions(opts...)
715	return out, req.Send()
716}
717
718const opDeleteListener = "DeleteListener"
719
720// DeleteListenerRequest generates a "aws/request.Request" representing the
721// client's request for the DeleteListener operation. The "output" return
722// value will be populated with the request's response once the request completes
723// successfully.
724//
725// Use "Send" method on the returned Request to send the API call to the service.
726// the "output" return value is not valid until after Send returns without error.
727//
728// See DeleteListener for more information on using the DeleteListener
729// API call, and error handling.
730//
731// This method is useful when you want to inject custom logic or configuration
732// into the SDK's request lifecycle. Such as custom headers, or retry logic.
733//
734//
735//    // Example sending a request using the DeleteListenerRequest method.
736//    req, resp := client.DeleteListenerRequest(params)
737//
738//    err := req.Send()
739//    if err == nil { // resp is now filled
740//        fmt.Println(resp)
741//    }
742//
743// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener
744func (c *ELBV2) DeleteListenerRequest(input *DeleteListenerInput) (req *request.Request, output *DeleteListenerOutput) {
745	op := &request.Operation{
746		Name:       opDeleteListener,
747		HTTPMethod: "POST",
748		HTTPPath:   "/",
749	}
750
751	if input == nil {
752		input = &DeleteListenerInput{}
753	}
754
755	output = &DeleteListenerOutput{}
756	req = c.newRequest(op, input, output)
757	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
758	return
759}
760
761// DeleteListener API operation for Elastic Load Balancing.
762//
763// Deletes the specified listener.
764//
765// Alternatively, your listener is deleted when you delete the load balancer
766// to which it is attached.
767//
768// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
769// with awserr.Error's Code and Message methods to get detailed information about
770// the error.
771//
772// See the AWS API reference guide for Elastic Load Balancing's
773// API operation DeleteListener for usage and error information.
774//
775// Returned Error Codes:
776//   * ErrCodeListenerNotFoundException "ListenerNotFound"
777//   The specified listener does not exist.
778//
779//   * ErrCodeResourceInUseException "ResourceInUse"
780//   A specified resource is in use.
781//
782// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteListener
783func (c *ELBV2) DeleteListener(input *DeleteListenerInput) (*DeleteListenerOutput, error) {
784	req, out := c.DeleteListenerRequest(input)
785	return out, req.Send()
786}
787
788// DeleteListenerWithContext is the same as DeleteListener with the addition of
789// the ability to pass a context and additional request options.
790//
791// See DeleteListener for details on how to use this API operation.
792//
793// The context must be non-nil and will be used for request cancellation. If
794// the context is nil a panic will occur. In the future the SDK may create
795// sub-contexts for http.Requests. See https://golang.org/pkg/context/
796// for more information on using Contexts.
797func (c *ELBV2) DeleteListenerWithContext(ctx aws.Context, input *DeleteListenerInput, opts ...request.Option) (*DeleteListenerOutput, error) {
798	req, out := c.DeleteListenerRequest(input)
799	req.SetContext(ctx)
800	req.ApplyOptions(opts...)
801	return out, req.Send()
802}
803
804const opDeleteLoadBalancer = "DeleteLoadBalancer"
805
806// DeleteLoadBalancerRequest generates a "aws/request.Request" representing the
807// client's request for the DeleteLoadBalancer operation. The "output" return
808// value will be populated with the request's response once the request completes
809// successfully.
810//
811// Use "Send" method on the returned Request to send the API call to the service.
812// the "output" return value is not valid until after Send returns without error.
813//
814// See DeleteLoadBalancer for more information on using the DeleteLoadBalancer
815// API call, and error handling.
816//
817// This method is useful when you want to inject custom logic or configuration
818// into the SDK's request lifecycle. Such as custom headers, or retry logic.
819//
820//
821//    // Example sending a request using the DeleteLoadBalancerRequest method.
822//    req, resp := client.DeleteLoadBalancerRequest(params)
823//
824//    err := req.Send()
825//    if err == nil { // resp is now filled
826//        fmt.Println(resp)
827//    }
828//
829// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer
830func (c *ELBV2) DeleteLoadBalancerRequest(input *DeleteLoadBalancerInput) (req *request.Request, output *DeleteLoadBalancerOutput) {
831	op := &request.Operation{
832		Name:       opDeleteLoadBalancer,
833		HTTPMethod: "POST",
834		HTTPPath:   "/",
835	}
836
837	if input == nil {
838		input = &DeleteLoadBalancerInput{}
839	}
840
841	output = &DeleteLoadBalancerOutput{}
842	req = c.newRequest(op, input, output)
843	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
844	return
845}
846
847// DeleteLoadBalancer API operation for Elastic Load Balancing.
848//
849// Deletes the specified Application Load Balancer, Network Load Balancer, or
850// Gateway Load Balancer. Deleting a load balancer also deletes its listeners.
851//
852// You can't delete a load balancer if deletion protection is enabled. If the
853// load balancer does not exist or has already been deleted, the call succeeds.
854//
855// Deleting a load balancer does not affect its registered targets. For example,
856// your EC2 instances continue to run and are still registered to their target
857// groups. If you no longer need these EC2 instances, you can stop or terminate
858// them.
859//
860// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
861// with awserr.Error's Code and Message methods to get detailed information about
862// the error.
863//
864// See the AWS API reference guide for Elastic Load Balancing's
865// API operation DeleteLoadBalancer for usage and error information.
866//
867// Returned Error Codes:
868//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
869//   The specified load balancer does not exist.
870//
871//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
872//   This operation is not allowed.
873//
874//   * ErrCodeResourceInUseException "ResourceInUse"
875//   A specified resource is in use.
876//
877// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteLoadBalancer
878func (c *ELBV2) DeleteLoadBalancer(input *DeleteLoadBalancerInput) (*DeleteLoadBalancerOutput, error) {
879	req, out := c.DeleteLoadBalancerRequest(input)
880	return out, req.Send()
881}
882
883// DeleteLoadBalancerWithContext is the same as DeleteLoadBalancer with the addition of
884// the ability to pass a context and additional request options.
885//
886// See DeleteLoadBalancer for details on how to use this API operation.
887//
888// The context must be non-nil and will be used for request cancellation. If
889// the context is nil a panic will occur. In the future the SDK may create
890// sub-contexts for http.Requests. See https://golang.org/pkg/context/
891// for more information on using Contexts.
892func (c *ELBV2) DeleteLoadBalancerWithContext(ctx aws.Context, input *DeleteLoadBalancerInput, opts ...request.Option) (*DeleteLoadBalancerOutput, error) {
893	req, out := c.DeleteLoadBalancerRequest(input)
894	req.SetContext(ctx)
895	req.ApplyOptions(opts...)
896	return out, req.Send()
897}
898
899const opDeleteRule = "DeleteRule"
900
901// DeleteRuleRequest generates a "aws/request.Request" representing the
902// client's request for the DeleteRule operation. The "output" return
903// value will be populated with the request's response once the request completes
904// successfully.
905//
906// Use "Send" method on the returned Request to send the API call to the service.
907// the "output" return value is not valid until after Send returns without error.
908//
909// See DeleteRule for more information on using the DeleteRule
910// API call, and error handling.
911//
912// This method is useful when you want to inject custom logic or configuration
913// into the SDK's request lifecycle. Such as custom headers, or retry logic.
914//
915//
916//    // Example sending a request using the DeleteRuleRequest method.
917//    req, resp := client.DeleteRuleRequest(params)
918//
919//    err := req.Send()
920//    if err == nil { // resp is now filled
921//        fmt.Println(resp)
922//    }
923//
924// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule
925func (c *ELBV2) DeleteRuleRequest(input *DeleteRuleInput) (req *request.Request, output *DeleteRuleOutput) {
926	op := &request.Operation{
927		Name:       opDeleteRule,
928		HTTPMethod: "POST",
929		HTTPPath:   "/",
930	}
931
932	if input == nil {
933		input = &DeleteRuleInput{}
934	}
935
936	output = &DeleteRuleOutput{}
937	req = c.newRequest(op, input, output)
938	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
939	return
940}
941
942// DeleteRule API operation for Elastic Load Balancing.
943//
944// Deletes the specified rule.
945//
946// You can't delete the default rule.
947//
948// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
949// with awserr.Error's Code and Message methods to get detailed information about
950// the error.
951//
952// See the AWS API reference guide for Elastic Load Balancing's
953// API operation DeleteRule for usage and error information.
954//
955// Returned Error Codes:
956//   * ErrCodeRuleNotFoundException "RuleNotFound"
957//   The specified rule does not exist.
958//
959//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
960//   This operation is not allowed.
961//
962// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteRule
963func (c *ELBV2) DeleteRule(input *DeleteRuleInput) (*DeleteRuleOutput, error) {
964	req, out := c.DeleteRuleRequest(input)
965	return out, req.Send()
966}
967
968// DeleteRuleWithContext is the same as DeleteRule with the addition of
969// the ability to pass a context and additional request options.
970//
971// See DeleteRule for details on how to use this API operation.
972//
973// The context must be non-nil and will be used for request cancellation. If
974// the context is nil a panic will occur. In the future the SDK may create
975// sub-contexts for http.Requests. See https://golang.org/pkg/context/
976// for more information on using Contexts.
977func (c *ELBV2) DeleteRuleWithContext(ctx aws.Context, input *DeleteRuleInput, opts ...request.Option) (*DeleteRuleOutput, error) {
978	req, out := c.DeleteRuleRequest(input)
979	req.SetContext(ctx)
980	req.ApplyOptions(opts...)
981	return out, req.Send()
982}
983
984const opDeleteTargetGroup = "DeleteTargetGroup"
985
986// DeleteTargetGroupRequest generates a "aws/request.Request" representing the
987// client's request for the DeleteTargetGroup operation. The "output" return
988// value will be populated with the request's response once the request completes
989// successfully.
990//
991// Use "Send" method on the returned Request to send the API call to the service.
992// the "output" return value is not valid until after Send returns without error.
993//
994// See DeleteTargetGroup for more information on using the DeleteTargetGroup
995// API call, and error handling.
996//
997// This method is useful when you want to inject custom logic or configuration
998// into the SDK's request lifecycle. Such as custom headers, or retry logic.
999//
1000//
1001//    // Example sending a request using the DeleteTargetGroupRequest method.
1002//    req, resp := client.DeleteTargetGroupRequest(params)
1003//
1004//    err := req.Send()
1005//    if err == nil { // resp is now filled
1006//        fmt.Println(resp)
1007//    }
1008//
1009// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup
1010func (c *ELBV2) DeleteTargetGroupRequest(input *DeleteTargetGroupInput) (req *request.Request, output *DeleteTargetGroupOutput) {
1011	op := &request.Operation{
1012		Name:       opDeleteTargetGroup,
1013		HTTPMethod: "POST",
1014		HTTPPath:   "/",
1015	}
1016
1017	if input == nil {
1018		input = &DeleteTargetGroupInput{}
1019	}
1020
1021	output = &DeleteTargetGroupOutput{}
1022	req = c.newRequest(op, input, output)
1023	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1024	return
1025}
1026
1027// DeleteTargetGroup API operation for Elastic Load Balancing.
1028//
1029// Deletes the specified target group.
1030//
1031// You can delete a target group if it is not referenced by any actions. Deleting
1032// a target group also deletes any associated health checks. Deleting a target
1033// group does not affect its registered targets. For example, any EC2 instances
1034// continue to run until you stop or terminate them.
1035//
1036// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1037// with awserr.Error's Code and Message methods to get detailed information about
1038// the error.
1039//
1040// See the AWS API reference guide for Elastic Load Balancing's
1041// API operation DeleteTargetGroup for usage and error information.
1042//
1043// Returned Error Codes:
1044//   * ErrCodeResourceInUseException "ResourceInUse"
1045//   A specified resource is in use.
1046//
1047// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeleteTargetGroup
1048func (c *ELBV2) DeleteTargetGroup(input *DeleteTargetGroupInput) (*DeleteTargetGroupOutput, error) {
1049	req, out := c.DeleteTargetGroupRequest(input)
1050	return out, req.Send()
1051}
1052
1053// DeleteTargetGroupWithContext is the same as DeleteTargetGroup with the addition of
1054// the ability to pass a context and additional request options.
1055//
1056// See DeleteTargetGroup for details on how to use this API operation.
1057//
1058// The context must be non-nil and will be used for request cancellation. If
1059// the context is nil a panic will occur. In the future the SDK may create
1060// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1061// for more information on using Contexts.
1062func (c *ELBV2) DeleteTargetGroupWithContext(ctx aws.Context, input *DeleteTargetGroupInput, opts ...request.Option) (*DeleteTargetGroupOutput, error) {
1063	req, out := c.DeleteTargetGroupRequest(input)
1064	req.SetContext(ctx)
1065	req.ApplyOptions(opts...)
1066	return out, req.Send()
1067}
1068
1069const opDeregisterTargets = "DeregisterTargets"
1070
1071// DeregisterTargetsRequest generates a "aws/request.Request" representing the
1072// client's request for the DeregisterTargets operation. The "output" return
1073// value will be populated with the request's response once the request completes
1074// successfully.
1075//
1076// Use "Send" method on the returned Request to send the API call to the service.
1077// the "output" return value is not valid until after Send returns without error.
1078//
1079// See DeregisterTargets for more information on using the DeregisterTargets
1080// API call, and error handling.
1081//
1082// This method is useful when you want to inject custom logic or configuration
1083// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1084//
1085//
1086//    // Example sending a request using the DeregisterTargetsRequest method.
1087//    req, resp := client.DeregisterTargetsRequest(params)
1088//
1089//    err := req.Send()
1090//    if err == nil { // resp is now filled
1091//        fmt.Println(resp)
1092//    }
1093//
1094// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets
1095func (c *ELBV2) DeregisterTargetsRequest(input *DeregisterTargetsInput) (req *request.Request, output *DeregisterTargetsOutput) {
1096	op := &request.Operation{
1097		Name:       opDeregisterTargets,
1098		HTTPMethod: "POST",
1099		HTTPPath:   "/",
1100	}
1101
1102	if input == nil {
1103		input = &DeregisterTargetsInput{}
1104	}
1105
1106	output = &DeregisterTargetsOutput{}
1107	req = c.newRequest(op, input, output)
1108	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1109	return
1110}
1111
1112// DeregisterTargets API operation for Elastic Load Balancing.
1113//
1114// Deregisters the specified targets from the specified target group. After
1115// the targets are deregistered, they no longer receive traffic from the load
1116// balancer.
1117//
1118// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1119// with awserr.Error's Code and Message methods to get detailed information about
1120// the error.
1121//
1122// See the AWS API reference guide for Elastic Load Balancing's
1123// API operation DeregisterTargets for usage and error information.
1124//
1125// Returned Error Codes:
1126//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1127//   The specified target group does not exist.
1128//
1129//   * ErrCodeInvalidTargetException "InvalidTarget"
1130//   The specified target does not exist, is not in the same VPC as the target
1131//   group, or has an unsupported instance type.
1132//
1133// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DeregisterTargets
1134func (c *ELBV2) DeregisterTargets(input *DeregisterTargetsInput) (*DeregisterTargetsOutput, error) {
1135	req, out := c.DeregisterTargetsRequest(input)
1136	return out, req.Send()
1137}
1138
1139// DeregisterTargetsWithContext is the same as DeregisterTargets with the addition of
1140// the ability to pass a context and additional request options.
1141//
1142// See DeregisterTargets for details on how to use this API operation.
1143//
1144// The context must be non-nil and will be used for request cancellation. If
1145// the context is nil a panic will occur. In the future the SDK may create
1146// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1147// for more information on using Contexts.
1148func (c *ELBV2) DeregisterTargetsWithContext(ctx aws.Context, input *DeregisterTargetsInput, opts ...request.Option) (*DeregisterTargetsOutput, error) {
1149	req, out := c.DeregisterTargetsRequest(input)
1150	req.SetContext(ctx)
1151	req.ApplyOptions(opts...)
1152	return out, req.Send()
1153}
1154
1155const opDescribeAccountLimits = "DescribeAccountLimits"
1156
1157// DescribeAccountLimitsRequest generates a "aws/request.Request" representing the
1158// client's request for the DescribeAccountLimits operation. The "output" return
1159// value will be populated with the request's response once the request completes
1160// successfully.
1161//
1162// Use "Send" method on the returned Request to send the API call to the service.
1163// the "output" return value is not valid until after Send returns without error.
1164//
1165// See DescribeAccountLimits for more information on using the DescribeAccountLimits
1166// API call, and error handling.
1167//
1168// This method is useful when you want to inject custom logic or configuration
1169// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1170//
1171//
1172//    // Example sending a request using the DescribeAccountLimitsRequest method.
1173//    req, resp := client.DescribeAccountLimitsRequest(params)
1174//
1175//    err := req.Send()
1176//    if err == nil { // resp is now filled
1177//        fmt.Println(resp)
1178//    }
1179//
1180// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits
1181func (c *ELBV2) DescribeAccountLimitsRequest(input *DescribeAccountLimitsInput) (req *request.Request, output *DescribeAccountLimitsOutput) {
1182	op := &request.Operation{
1183		Name:       opDescribeAccountLimits,
1184		HTTPMethod: "POST",
1185		HTTPPath:   "/",
1186	}
1187
1188	if input == nil {
1189		input = &DescribeAccountLimitsInput{}
1190	}
1191
1192	output = &DescribeAccountLimitsOutput{}
1193	req = c.newRequest(op, input, output)
1194	return
1195}
1196
1197// DescribeAccountLimits API operation for Elastic Load Balancing.
1198//
1199// Describes the current Elastic Load Balancing resource limits for your Amazon
1200// Web Services account.
1201//
1202// For more information, see the following:
1203//
1204//    * Quotas for your Application Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html)
1205//
1206//    * Quotas for your Network Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-limits.html)
1207//
1208//    * Quotas for your Gateway Load Balancers (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/quotas-limits.html)
1209//
1210// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1211// with awserr.Error's Code and Message methods to get detailed information about
1212// the error.
1213//
1214// See the AWS API reference guide for Elastic Load Balancing's
1215// API operation DescribeAccountLimits for usage and error information.
1216// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeAccountLimits
1217func (c *ELBV2) DescribeAccountLimits(input *DescribeAccountLimitsInput) (*DescribeAccountLimitsOutput, error) {
1218	req, out := c.DescribeAccountLimitsRequest(input)
1219	return out, req.Send()
1220}
1221
1222// DescribeAccountLimitsWithContext is the same as DescribeAccountLimits with the addition of
1223// the ability to pass a context and additional request options.
1224//
1225// See DescribeAccountLimits for details on how to use this API operation.
1226//
1227// The context must be non-nil and will be used for request cancellation. If
1228// the context is nil a panic will occur. In the future the SDK may create
1229// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1230// for more information on using Contexts.
1231func (c *ELBV2) DescribeAccountLimitsWithContext(ctx aws.Context, input *DescribeAccountLimitsInput, opts ...request.Option) (*DescribeAccountLimitsOutput, error) {
1232	req, out := c.DescribeAccountLimitsRequest(input)
1233	req.SetContext(ctx)
1234	req.ApplyOptions(opts...)
1235	return out, req.Send()
1236}
1237
1238const opDescribeListenerCertificates = "DescribeListenerCertificates"
1239
1240// DescribeListenerCertificatesRequest generates a "aws/request.Request" representing the
1241// client's request for the DescribeListenerCertificates operation. The "output" return
1242// value will be populated with the request's response once the request completes
1243// successfully.
1244//
1245// Use "Send" method on the returned Request to send the API call to the service.
1246// the "output" return value is not valid until after Send returns without error.
1247//
1248// See DescribeListenerCertificates for more information on using the DescribeListenerCertificates
1249// API call, and error handling.
1250//
1251// This method is useful when you want to inject custom logic or configuration
1252// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1253//
1254//
1255//    // Example sending a request using the DescribeListenerCertificatesRequest method.
1256//    req, resp := client.DescribeListenerCertificatesRequest(params)
1257//
1258//    err := req.Send()
1259//    if err == nil { // resp is now filled
1260//        fmt.Println(resp)
1261//    }
1262//
1263// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenerCertificates
1264func (c *ELBV2) DescribeListenerCertificatesRequest(input *DescribeListenerCertificatesInput) (req *request.Request, output *DescribeListenerCertificatesOutput) {
1265	op := &request.Operation{
1266		Name:       opDescribeListenerCertificates,
1267		HTTPMethod: "POST",
1268		HTTPPath:   "/",
1269	}
1270
1271	if input == nil {
1272		input = &DescribeListenerCertificatesInput{}
1273	}
1274
1275	output = &DescribeListenerCertificatesOutput{}
1276	req = c.newRequest(op, input, output)
1277	return
1278}
1279
1280// DescribeListenerCertificates API operation for Elastic Load Balancing.
1281//
1282// Describes the default certificate and the certificate list for the specified
1283// HTTPS or TLS listener.
1284//
1285// If the default certificate is also in the certificate list, it appears twice
1286// in the results (once with IsDefault set to true and once with IsDefault set
1287// to false).
1288//
1289// For more information, see SSL certificates (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#https-listener-certificates)
1290// in the Application Load Balancers Guide or Server certificates (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#tls-listener-certificate)
1291// in the Network Load Balancers Guide.
1292//
1293// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1294// with awserr.Error's Code and Message methods to get detailed information about
1295// the error.
1296//
1297// See the AWS API reference guide for Elastic Load Balancing's
1298// API operation DescribeListenerCertificates for usage and error information.
1299//
1300// Returned Error Codes:
1301//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1302//   The specified listener does not exist.
1303//
1304// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListenerCertificates
1305func (c *ELBV2) DescribeListenerCertificates(input *DescribeListenerCertificatesInput) (*DescribeListenerCertificatesOutput, error) {
1306	req, out := c.DescribeListenerCertificatesRequest(input)
1307	return out, req.Send()
1308}
1309
1310// DescribeListenerCertificatesWithContext is the same as DescribeListenerCertificates with the addition of
1311// the ability to pass a context and additional request options.
1312//
1313// See DescribeListenerCertificates for details on how to use this API operation.
1314//
1315// The context must be non-nil and will be used for request cancellation. If
1316// the context is nil a panic will occur. In the future the SDK may create
1317// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1318// for more information on using Contexts.
1319func (c *ELBV2) DescribeListenerCertificatesWithContext(ctx aws.Context, input *DescribeListenerCertificatesInput, opts ...request.Option) (*DescribeListenerCertificatesOutput, error) {
1320	req, out := c.DescribeListenerCertificatesRequest(input)
1321	req.SetContext(ctx)
1322	req.ApplyOptions(opts...)
1323	return out, req.Send()
1324}
1325
1326const opDescribeListeners = "DescribeListeners"
1327
1328// DescribeListenersRequest generates a "aws/request.Request" representing the
1329// client's request for the DescribeListeners operation. The "output" return
1330// value will be populated with the request's response once the request completes
1331// successfully.
1332//
1333// Use "Send" method on the returned Request to send the API call to the service.
1334// the "output" return value is not valid until after Send returns without error.
1335//
1336// See DescribeListeners for more information on using the DescribeListeners
1337// API call, and error handling.
1338//
1339// This method is useful when you want to inject custom logic or configuration
1340// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1341//
1342//
1343//    // Example sending a request using the DescribeListenersRequest method.
1344//    req, resp := client.DescribeListenersRequest(params)
1345//
1346//    err := req.Send()
1347//    if err == nil { // resp is now filled
1348//        fmt.Println(resp)
1349//    }
1350//
1351// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners
1352func (c *ELBV2) DescribeListenersRequest(input *DescribeListenersInput) (req *request.Request, output *DescribeListenersOutput) {
1353	op := &request.Operation{
1354		Name:       opDescribeListeners,
1355		HTTPMethod: "POST",
1356		HTTPPath:   "/",
1357		Paginator: &request.Paginator{
1358			InputTokens:     []string{"Marker"},
1359			OutputTokens:    []string{"NextMarker"},
1360			LimitToken:      "",
1361			TruncationToken: "",
1362		},
1363	}
1364
1365	if input == nil {
1366		input = &DescribeListenersInput{}
1367	}
1368
1369	output = &DescribeListenersOutput{}
1370	req = c.newRequest(op, input, output)
1371	return
1372}
1373
1374// DescribeListeners API operation for Elastic Load Balancing.
1375//
1376// Describes the specified listeners or the listeners for the specified Application
1377// Load Balancer, Network Load Balancer, or Gateway Load Balancer. You must
1378// specify either a load balancer or one or more listeners.
1379//
1380// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1381// with awserr.Error's Code and Message methods to get detailed information about
1382// the error.
1383//
1384// See the AWS API reference guide for Elastic Load Balancing's
1385// API operation DescribeListeners for usage and error information.
1386//
1387// Returned Error Codes:
1388//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1389//   The specified listener does not exist.
1390//
1391//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1392//   The specified load balancer does not exist.
1393//
1394//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
1395//   The specified protocol is not supported.
1396//
1397// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeListeners
1398func (c *ELBV2) DescribeListeners(input *DescribeListenersInput) (*DescribeListenersOutput, error) {
1399	req, out := c.DescribeListenersRequest(input)
1400	return out, req.Send()
1401}
1402
1403// DescribeListenersWithContext is the same as DescribeListeners with the addition of
1404// the ability to pass a context and additional request options.
1405//
1406// See DescribeListeners for details on how to use this API operation.
1407//
1408// The context must be non-nil and will be used for request cancellation. If
1409// the context is nil a panic will occur. In the future the SDK may create
1410// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1411// for more information on using Contexts.
1412func (c *ELBV2) DescribeListenersWithContext(ctx aws.Context, input *DescribeListenersInput, opts ...request.Option) (*DescribeListenersOutput, error) {
1413	req, out := c.DescribeListenersRequest(input)
1414	req.SetContext(ctx)
1415	req.ApplyOptions(opts...)
1416	return out, req.Send()
1417}
1418
1419// DescribeListenersPages iterates over the pages of a DescribeListeners operation,
1420// calling the "fn" function with the response data for each page. To stop
1421// iterating, return false from the fn function.
1422//
1423// See DescribeListeners method for more information on how to use this operation.
1424//
1425// Note: This operation can generate multiple requests to a service.
1426//
1427//    // Example iterating over at most 3 pages of a DescribeListeners operation.
1428//    pageNum := 0
1429//    err := client.DescribeListenersPages(params,
1430//        func(page *elbv2.DescribeListenersOutput, lastPage bool) bool {
1431//            pageNum++
1432//            fmt.Println(page)
1433//            return pageNum <= 3
1434//        })
1435//
1436func (c *ELBV2) DescribeListenersPages(input *DescribeListenersInput, fn func(*DescribeListenersOutput, bool) bool) error {
1437	return c.DescribeListenersPagesWithContext(aws.BackgroundContext(), input, fn)
1438}
1439
1440// DescribeListenersPagesWithContext same as DescribeListenersPages except
1441// it takes a Context and allows setting request options on the pages.
1442//
1443// The context must be non-nil and will be used for request cancellation. If
1444// the context is nil a panic will occur. In the future the SDK may create
1445// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1446// for more information on using Contexts.
1447func (c *ELBV2) DescribeListenersPagesWithContext(ctx aws.Context, input *DescribeListenersInput, fn func(*DescribeListenersOutput, bool) bool, opts ...request.Option) error {
1448	p := request.Pagination{
1449		NewRequest: func() (*request.Request, error) {
1450			var inCpy *DescribeListenersInput
1451			if input != nil {
1452				tmp := *input
1453				inCpy = &tmp
1454			}
1455			req, _ := c.DescribeListenersRequest(inCpy)
1456			req.SetContext(ctx)
1457			req.ApplyOptions(opts...)
1458			return req, nil
1459		},
1460	}
1461
1462	for p.Next() {
1463		if !fn(p.Page().(*DescribeListenersOutput), !p.HasNextPage()) {
1464			break
1465		}
1466	}
1467
1468	return p.Err()
1469}
1470
1471const opDescribeLoadBalancerAttributes = "DescribeLoadBalancerAttributes"
1472
1473// DescribeLoadBalancerAttributesRequest generates a "aws/request.Request" representing the
1474// client's request for the DescribeLoadBalancerAttributes operation. The "output" return
1475// value will be populated with the request's response once the request completes
1476// successfully.
1477//
1478// Use "Send" method on the returned Request to send the API call to the service.
1479// the "output" return value is not valid until after Send returns without error.
1480//
1481// See DescribeLoadBalancerAttributes for more information on using the DescribeLoadBalancerAttributes
1482// API call, and error handling.
1483//
1484// This method is useful when you want to inject custom logic or configuration
1485// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1486//
1487//
1488//    // Example sending a request using the DescribeLoadBalancerAttributesRequest method.
1489//    req, resp := client.DescribeLoadBalancerAttributesRequest(params)
1490//
1491//    err := req.Send()
1492//    if err == nil { // resp is now filled
1493//        fmt.Println(resp)
1494//    }
1495//
1496// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes
1497func (c *ELBV2) DescribeLoadBalancerAttributesRequest(input *DescribeLoadBalancerAttributesInput) (req *request.Request, output *DescribeLoadBalancerAttributesOutput) {
1498	op := &request.Operation{
1499		Name:       opDescribeLoadBalancerAttributes,
1500		HTTPMethod: "POST",
1501		HTTPPath:   "/",
1502	}
1503
1504	if input == nil {
1505		input = &DescribeLoadBalancerAttributesInput{}
1506	}
1507
1508	output = &DescribeLoadBalancerAttributesOutput{}
1509	req = c.newRequest(op, input, output)
1510	return
1511}
1512
1513// DescribeLoadBalancerAttributes API operation for Elastic Load Balancing.
1514//
1515// Describes the attributes for the specified Application Load Balancer, Network
1516// Load Balancer, or Gateway Load Balancer.
1517//
1518// For more information, see the following:
1519//
1520//    * Load balancer attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#load-balancer-attributes)
1521//    in the Application Load Balancers Guide
1522//
1523//    * Load balancer attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html#load-balancer-attributes)
1524//    in the Network Load Balancers Guide
1525//
1526//    * Load balancer attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/gateway-load-balancers.html#load-balancer-attributes)
1527//    in the Gateway Load Balancers Guide
1528//
1529// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1530// with awserr.Error's Code and Message methods to get detailed information about
1531// the error.
1532//
1533// See the AWS API reference guide for Elastic Load Balancing's
1534// API operation DescribeLoadBalancerAttributes for usage and error information.
1535//
1536// Returned Error Codes:
1537//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1538//   The specified load balancer does not exist.
1539//
1540// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancerAttributes
1541func (c *ELBV2) DescribeLoadBalancerAttributes(input *DescribeLoadBalancerAttributesInput) (*DescribeLoadBalancerAttributesOutput, error) {
1542	req, out := c.DescribeLoadBalancerAttributesRequest(input)
1543	return out, req.Send()
1544}
1545
1546// DescribeLoadBalancerAttributesWithContext is the same as DescribeLoadBalancerAttributes with the addition of
1547// the ability to pass a context and additional request options.
1548//
1549// See DescribeLoadBalancerAttributes for details on how to use this API operation.
1550//
1551// The context must be non-nil and will be used for request cancellation. If
1552// the context is nil a panic will occur. In the future the SDK may create
1553// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1554// for more information on using Contexts.
1555func (c *ELBV2) DescribeLoadBalancerAttributesWithContext(ctx aws.Context, input *DescribeLoadBalancerAttributesInput, opts ...request.Option) (*DescribeLoadBalancerAttributesOutput, error) {
1556	req, out := c.DescribeLoadBalancerAttributesRequest(input)
1557	req.SetContext(ctx)
1558	req.ApplyOptions(opts...)
1559	return out, req.Send()
1560}
1561
1562const opDescribeLoadBalancers = "DescribeLoadBalancers"
1563
1564// DescribeLoadBalancersRequest generates a "aws/request.Request" representing the
1565// client's request for the DescribeLoadBalancers operation. The "output" return
1566// value will be populated with the request's response once the request completes
1567// successfully.
1568//
1569// Use "Send" method on the returned Request to send the API call to the service.
1570// the "output" return value is not valid until after Send returns without error.
1571//
1572// See DescribeLoadBalancers for more information on using the DescribeLoadBalancers
1573// API call, and error handling.
1574//
1575// This method is useful when you want to inject custom logic or configuration
1576// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1577//
1578//
1579//    // Example sending a request using the DescribeLoadBalancersRequest method.
1580//    req, resp := client.DescribeLoadBalancersRequest(params)
1581//
1582//    err := req.Send()
1583//    if err == nil { // resp is now filled
1584//        fmt.Println(resp)
1585//    }
1586//
1587// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers
1588func (c *ELBV2) DescribeLoadBalancersRequest(input *DescribeLoadBalancersInput) (req *request.Request, output *DescribeLoadBalancersOutput) {
1589	op := &request.Operation{
1590		Name:       opDescribeLoadBalancers,
1591		HTTPMethod: "POST",
1592		HTTPPath:   "/",
1593		Paginator: &request.Paginator{
1594			InputTokens:     []string{"Marker"},
1595			OutputTokens:    []string{"NextMarker"},
1596			LimitToken:      "",
1597			TruncationToken: "",
1598		},
1599	}
1600
1601	if input == nil {
1602		input = &DescribeLoadBalancersInput{}
1603	}
1604
1605	output = &DescribeLoadBalancersOutput{}
1606	req = c.newRequest(op, input, output)
1607	return
1608}
1609
1610// DescribeLoadBalancers API operation for Elastic Load Balancing.
1611//
1612// Describes the specified load balancers or all of your load balancers.
1613//
1614// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1615// with awserr.Error's Code and Message methods to get detailed information about
1616// the error.
1617//
1618// See the AWS API reference guide for Elastic Load Balancing's
1619// API operation DescribeLoadBalancers for usage and error information.
1620//
1621// Returned Error Codes:
1622//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1623//   The specified load balancer does not exist.
1624//
1625// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeLoadBalancers
1626func (c *ELBV2) DescribeLoadBalancers(input *DescribeLoadBalancersInput) (*DescribeLoadBalancersOutput, error) {
1627	req, out := c.DescribeLoadBalancersRequest(input)
1628	return out, req.Send()
1629}
1630
1631// DescribeLoadBalancersWithContext is the same as DescribeLoadBalancers with the addition of
1632// the ability to pass a context and additional request options.
1633//
1634// See DescribeLoadBalancers for details on how to use this API operation.
1635//
1636// The context must be non-nil and will be used for request cancellation. If
1637// the context is nil a panic will occur. In the future the SDK may create
1638// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1639// for more information on using Contexts.
1640func (c *ELBV2) DescribeLoadBalancersWithContext(ctx aws.Context, input *DescribeLoadBalancersInput, opts ...request.Option) (*DescribeLoadBalancersOutput, error) {
1641	req, out := c.DescribeLoadBalancersRequest(input)
1642	req.SetContext(ctx)
1643	req.ApplyOptions(opts...)
1644	return out, req.Send()
1645}
1646
1647// DescribeLoadBalancersPages iterates over the pages of a DescribeLoadBalancers operation,
1648// calling the "fn" function with the response data for each page. To stop
1649// iterating, return false from the fn function.
1650//
1651// See DescribeLoadBalancers method for more information on how to use this operation.
1652//
1653// Note: This operation can generate multiple requests to a service.
1654//
1655//    // Example iterating over at most 3 pages of a DescribeLoadBalancers operation.
1656//    pageNum := 0
1657//    err := client.DescribeLoadBalancersPages(params,
1658//        func(page *elbv2.DescribeLoadBalancersOutput, lastPage bool) bool {
1659//            pageNum++
1660//            fmt.Println(page)
1661//            return pageNum <= 3
1662//        })
1663//
1664func (c *ELBV2) DescribeLoadBalancersPages(input *DescribeLoadBalancersInput, fn func(*DescribeLoadBalancersOutput, bool) bool) error {
1665	return c.DescribeLoadBalancersPagesWithContext(aws.BackgroundContext(), input, fn)
1666}
1667
1668// DescribeLoadBalancersPagesWithContext same as DescribeLoadBalancersPages except
1669// it takes a Context and allows setting request options on the pages.
1670//
1671// The context must be non-nil and will be used for request cancellation. If
1672// the context is nil a panic will occur. In the future the SDK may create
1673// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1674// for more information on using Contexts.
1675func (c *ELBV2) DescribeLoadBalancersPagesWithContext(ctx aws.Context, input *DescribeLoadBalancersInput, fn func(*DescribeLoadBalancersOutput, bool) bool, opts ...request.Option) error {
1676	p := request.Pagination{
1677		NewRequest: func() (*request.Request, error) {
1678			var inCpy *DescribeLoadBalancersInput
1679			if input != nil {
1680				tmp := *input
1681				inCpy = &tmp
1682			}
1683			req, _ := c.DescribeLoadBalancersRequest(inCpy)
1684			req.SetContext(ctx)
1685			req.ApplyOptions(opts...)
1686			return req, nil
1687		},
1688	}
1689
1690	for p.Next() {
1691		if !fn(p.Page().(*DescribeLoadBalancersOutput), !p.HasNextPage()) {
1692			break
1693		}
1694	}
1695
1696	return p.Err()
1697}
1698
1699const opDescribeRules = "DescribeRules"
1700
1701// DescribeRulesRequest generates a "aws/request.Request" representing the
1702// client's request for the DescribeRules operation. The "output" return
1703// value will be populated with the request's response once the request completes
1704// successfully.
1705//
1706// Use "Send" method on the returned Request to send the API call to the service.
1707// the "output" return value is not valid until after Send returns without error.
1708//
1709// See DescribeRules for more information on using the DescribeRules
1710// API call, and error handling.
1711//
1712// This method is useful when you want to inject custom logic or configuration
1713// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1714//
1715//
1716//    // Example sending a request using the DescribeRulesRequest method.
1717//    req, resp := client.DescribeRulesRequest(params)
1718//
1719//    err := req.Send()
1720//    if err == nil { // resp is now filled
1721//        fmt.Println(resp)
1722//    }
1723//
1724// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules
1725func (c *ELBV2) DescribeRulesRequest(input *DescribeRulesInput) (req *request.Request, output *DescribeRulesOutput) {
1726	op := &request.Operation{
1727		Name:       opDescribeRules,
1728		HTTPMethod: "POST",
1729		HTTPPath:   "/",
1730	}
1731
1732	if input == nil {
1733		input = &DescribeRulesInput{}
1734	}
1735
1736	output = &DescribeRulesOutput{}
1737	req = c.newRequest(op, input, output)
1738	return
1739}
1740
1741// DescribeRules API operation for Elastic Load Balancing.
1742//
1743// Describes the specified rules or the rules for the specified listener. You
1744// must specify either a listener or one or more rules.
1745//
1746// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1747// with awserr.Error's Code and Message methods to get detailed information about
1748// the error.
1749//
1750// See the AWS API reference guide for Elastic Load Balancing's
1751// API operation DescribeRules for usage and error information.
1752//
1753// Returned Error Codes:
1754//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1755//   The specified listener does not exist.
1756//
1757//   * ErrCodeRuleNotFoundException "RuleNotFound"
1758//   The specified rule does not exist.
1759//
1760//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
1761//   The specified protocol is not supported.
1762//
1763// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeRules
1764func (c *ELBV2) DescribeRules(input *DescribeRulesInput) (*DescribeRulesOutput, error) {
1765	req, out := c.DescribeRulesRequest(input)
1766	return out, req.Send()
1767}
1768
1769// DescribeRulesWithContext is the same as DescribeRules with the addition of
1770// the ability to pass a context and additional request options.
1771//
1772// See DescribeRules for details on how to use this API operation.
1773//
1774// The context must be non-nil and will be used for request cancellation. If
1775// the context is nil a panic will occur. In the future the SDK may create
1776// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1777// for more information on using Contexts.
1778func (c *ELBV2) DescribeRulesWithContext(ctx aws.Context, input *DescribeRulesInput, opts ...request.Option) (*DescribeRulesOutput, error) {
1779	req, out := c.DescribeRulesRequest(input)
1780	req.SetContext(ctx)
1781	req.ApplyOptions(opts...)
1782	return out, req.Send()
1783}
1784
1785const opDescribeSSLPolicies = "DescribeSSLPolicies"
1786
1787// DescribeSSLPoliciesRequest generates a "aws/request.Request" representing the
1788// client's request for the DescribeSSLPolicies operation. The "output" return
1789// value will be populated with the request's response once the request completes
1790// successfully.
1791//
1792// Use "Send" method on the returned Request to send the API call to the service.
1793// the "output" return value is not valid until after Send returns without error.
1794//
1795// See DescribeSSLPolicies for more information on using the DescribeSSLPolicies
1796// API call, and error handling.
1797//
1798// This method is useful when you want to inject custom logic or configuration
1799// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1800//
1801//
1802//    // Example sending a request using the DescribeSSLPoliciesRequest method.
1803//    req, resp := client.DescribeSSLPoliciesRequest(params)
1804//
1805//    err := req.Send()
1806//    if err == nil { // resp is now filled
1807//        fmt.Println(resp)
1808//    }
1809//
1810// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies
1811func (c *ELBV2) DescribeSSLPoliciesRequest(input *DescribeSSLPoliciesInput) (req *request.Request, output *DescribeSSLPoliciesOutput) {
1812	op := &request.Operation{
1813		Name:       opDescribeSSLPolicies,
1814		HTTPMethod: "POST",
1815		HTTPPath:   "/",
1816	}
1817
1818	if input == nil {
1819		input = &DescribeSSLPoliciesInput{}
1820	}
1821
1822	output = &DescribeSSLPoliciesOutput{}
1823	req = c.newRequest(op, input, output)
1824	return
1825}
1826
1827// DescribeSSLPolicies API operation for Elastic Load Balancing.
1828//
1829// Describes the specified policies or all policies used for SSL negotiation.
1830//
1831// For more information, see Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)
1832// in the Application Load Balancers Guide or Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies)
1833// in the Network Load Balancers Guide.
1834//
1835// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1836// with awserr.Error's Code and Message methods to get detailed information about
1837// the error.
1838//
1839// See the AWS API reference guide for Elastic Load Balancing's
1840// API operation DescribeSSLPolicies for usage and error information.
1841//
1842// Returned Error Codes:
1843//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
1844//   The specified SSL policy does not exist.
1845//
1846// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeSSLPolicies
1847func (c *ELBV2) DescribeSSLPolicies(input *DescribeSSLPoliciesInput) (*DescribeSSLPoliciesOutput, error) {
1848	req, out := c.DescribeSSLPoliciesRequest(input)
1849	return out, req.Send()
1850}
1851
1852// DescribeSSLPoliciesWithContext is the same as DescribeSSLPolicies with the addition of
1853// the ability to pass a context and additional request options.
1854//
1855// See DescribeSSLPolicies for details on how to use this API operation.
1856//
1857// The context must be non-nil and will be used for request cancellation. If
1858// the context is nil a panic will occur. In the future the SDK may create
1859// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1860// for more information on using Contexts.
1861func (c *ELBV2) DescribeSSLPoliciesWithContext(ctx aws.Context, input *DescribeSSLPoliciesInput, opts ...request.Option) (*DescribeSSLPoliciesOutput, error) {
1862	req, out := c.DescribeSSLPoliciesRequest(input)
1863	req.SetContext(ctx)
1864	req.ApplyOptions(opts...)
1865	return out, req.Send()
1866}
1867
1868const opDescribeTags = "DescribeTags"
1869
1870// DescribeTagsRequest generates a "aws/request.Request" representing the
1871// client's request for the DescribeTags operation. The "output" return
1872// value will be populated with the request's response once the request completes
1873// successfully.
1874//
1875// Use "Send" method on the returned Request to send the API call to the service.
1876// the "output" return value is not valid until after Send returns without error.
1877//
1878// See DescribeTags for more information on using the DescribeTags
1879// API call, and error handling.
1880//
1881// This method is useful when you want to inject custom logic or configuration
1882// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1883//
1884//
1885//    // Example sending a request using the DescribeTagsRequest method.
1886//    req, resp := client.DescribeTagsRequest(params)
1887//
1888//    err := req.Send()
1889//    if err == nil { // resp is now filled
1890//        fmt.Println(resp)
1891//    }
1892//
1893// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags
1894func (c *ELBV2) DescribeTagsRequest(input *DescribeTagsInput) (req *request.Request, output *DescribeTagsOutput) {
1895	op := &request.Operation{
1896		Name:       opDescribeTags,
1897		HTTPMethod: "POST",
1898		HTTPPath:   "/",
1899	}
1900
1901	if input == nil {
1902		input = &DescribeTagsInput{}
1903	}
1904
1905	output = &DescribeTagsOutput{}
1906	req = c.newRequest(op, input, output)
1907	return
1908}
1909
1910// DescribeTags API operation for Elastic Load Balancing.
1911//
1912// Describes the tags for the specified Elastic Load Balancing resources. You
1913// can describe the tags for one or more Application Load Balancers, Network
1914// Load Balancers, Gateway Load Balancers, target groups, listeners, or rules.
1915//
1916// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1917// with awserr.Error's Code and Message methods to get detailed information about
1918// the error.
1919//
1920// See the AWS API reference guide for Elastic Load Balancing's
1921// API operation DescribeTags for usage and error information.
1922//
1923// Returned Error Codes:
1924//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
1925//   The specified load balancer does not exist.
1926//
1927//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
1928//   The specified target group does not exist.
1929//
1930//   * ErrCodeListenerNotFoundException "ListenerNotFound"
1931//   The specified listener does not exist.
1932//
1933//   * ErrCodeRuleNotFoundException "RuleNotFound"
1934//   The specified rule does not exist.
1935//
1936// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTags
1937func (c *ELBV2) DescribeTags(input *DescribeTagsInput) (*DescribeTagsOutput, error) {
1938	req, out := c.DescribeTagsRequest(input)
1939	return out, req.Send()
1940}
1941
1942// DescribeTagsWithContext is the same as DescribeTags with the addition of
1943// the ability to pass a context and additional request options.
1944//
1945// See DescribeTags for details on how to use this API operation.
1946//
1947// The context must be non-nil and will be used for request cancellation. If
1948// the context is nil a panic will occur. In the future the SDK may create
1949// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1950// for more information on using Contexts.
1951func (c *ELBV2) DescribeTagsWithContext(ctx aws.Context, input *DescribeTagsInput, opts ...request.Option) (*DescribeTagsOutput, error) {
1952	req, out := c.DescribeTagsRequest(input)
1953	req.SetContext(ctx)
1954	req.ApplyOptions(opts...)
1955	return out, req.Send()
1956}
1957
1958const opDescribeTargetGroupAttributes = "DescribeTargetGroupAttributes"
1959
1960// DescribeTargetGroupAttributesRequest generates a "aws/request.Request" representing the
1961// client's request for the DescribeTargetGroupAttributes operation. The "output" return
1962// value will be populated with the request's response once the request completes
1963// successfully.
1964//
1965// Use "Send" method on the returned Request to send the API call to the service.
1966// the "output" return value is not valid until after Send returns without error.
1967//
1968// See DescribeTargetGroupAttributes for more information on using the DescribeTargetGroupAttributes
1969// API call, and error handling.
1970//
1971// This method is useful when you want to inject custom logic or configuration
1972// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1973//
1974//
1975//    // Example sending a request using the DescribeTargetGroupAttributesRequest method.
1976//    req, resp := client.DescribeTargetGroupAttributesRequest(params)
1977//
1978//    err := req.Send()
1979//    if err == nil { // resp is now filled
1980//        fmt.Println(resp)
1981//    }
1982//
1983// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes
1984func (c *ELBV2) DescribeTargetGroupAttributesRequest(input *DescribeTargetGroupAttributesInput) (req *request.Request, output *DescribeTargetGroupAttributesOutput) {
1985	op := &request.Operation{
1986		Name:       opDescribeTargetGroupAttributes,
1987		HTTPMethod: "POST",
1988		HTTPPath:   "/",
1989	}
1990
1991	if input == nil {
1992		input = &DescribeTargetGroupAttributesInput{}
1993	}
1994
1995	output = &DescribeTargetGroupAttributesOutput{}
1996	req = c.newRequest(op, input, output)
1997	return
1998}
1999
2000// DescribeTargetGroupAttributes API operation for Elastic Load Balancing.
2001//
2002// Describes the attributes for the specified target group.
2003//
2004// For more information, see the following:
2005//
2006//    * Target group attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-attributes)
2007//    in the Application Load Balancers Guide
2008//
2009//    * Target group attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-group-attributes)
2010//    in the Network Load Balancers Guide
2011//
2012//    * Target group attributes (https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/target-groups.html#target-group-attributes)
2013//    in the Gateway Load Balancers Guide
2014//
2015// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2016// with awserr.Error's Code and Message methods to get detailed information about
2017// the error.
2018//
2019// See the AWS API reference guide for Elastic Load Balancing's
2020// API operation DescribeTargetGroupAttributes for usage and error information.
2021//
2022// Returned Error Codes:
2023//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2024//   The specified target group does not exist.
2025//
2026// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroupAttributes
2027func (c *ELBV2) DescribeTargetGroupAttributes(input *DescribeTargetGroupAttributesInput) (*DescribeTargetGroupAttributesOutput, error) {
2028	req, out := c.DescribeTargetGroupAttributesRequest(input)
2029	return out, req.Send()
2030}
2031
2032// DescribeTargetGroupAttributesWithContext is the same as DescribeTargetGroupAttributes with the addition of
2033// the ability to pass a context and additional request options.
2034//
2035// See DescribeTargetGroupAttributes for details on how to use this API operation.
2036//
2037// The context must be non-nil and will be used for request cancellation. If
2038// the context is nil a panic will occur. In the future the SDK may create
2039// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2040// for more information on using Contexts.
2041func (c *ELBV2) DescribeTargetGroupAttributesWithContext(ctx aws.Context, input *DescribeTargetGroupAttributesInput, opts ...request.Option) (*DescribeTargetGroupAttributesOutput, error) {
2042	req, out := c.DescribeTargetGroupAttributesRequest(input)
2043	req.SetContext(ctx)
2044	req.ApplyOptions(opts...)
2045	return out, req.Send()
2046}
2047
2048const opDescribeTargetGroups = "DescribeTargetGroups"
2049
2050// DescribeTargetGroupsRequest generates a "aws/request.Request" representing the
2051// client's request for the DescribeTargetGroups operation. The "output" return
2052// value will be populated with the request's response once the request completes
2053// successfully.
2054//
2055// Use "Send" method on the returned Request to send the API call to the service.
2056// the "output" return value is not valid until after Send returns without error.
2057//
2058// See DescribeTargetGroups for more information on using the DescribeTargetGroups
2059// API call, and error handling.
2060//
2061// This method is useful when you want to inject custom logic or configuration
2062// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2063//
2064//
2065//    // Example sending a request using the DescribeTargetGroupsRequest method.
2066//    req, resp := client.DescribeTargetGroupsRequest(params)
2067//
2068//    err := req.Send()
2069//    if err == nil { // resp is now filled
2070//        fmt.Println(resp)
2071//    }
2072//
2073// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups
2074func (c *ELBV2) DescribeTargetGroupsRequest(input *DescribeTargetGroupsInput) (req *request.Request, output *DescribeTargetGroupsOutput) {
2075	op := &request.Operation{
2076		Name:       opDescribeTargetGroups,
2077		HTTPMethod: "POST",
2078		HTTPPath:   "/",
2079		Paginator: &request.Paginator{
2080			InputTokens:     []string{"Marker"},
2081			OutputTokens:    []string{"NextMarker"},
2082			LimitToken:      "",
2083			TruncationToken: "",
2084		},
2085	}
2086
2087	if input == nil {
2088		input = &DescribeTargetGroupsInput{}
2089	}
2090
2091	output = &DescribeTargetGroupsOutput{}
2092	req = c.newRequest(op, input, output)
2093	return
2094}
2095
2096// DescribeTargetGroups API operation for Elastic Load Balancing.
2097//
2098// Describes the specified target groups or all of your target groups. By default,
2099// all target groups are described. Alternatively, you can specify one of the
2100// following to filter the results: the ARN of the load balancer, the names
2101// of one or more target groups, or the ARNs of one or more target groups.
2102//
2103// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2104// with awserr.Error's Code and Message methods to get detailed information about
2105// the error.
2106//
2107// See the AWS API reference guide for Elastic Load Balancing's
2108// API operation DescribeTargetGroups for usage and error information.
2109//
2110// Returned Error Codes:
2111//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2112//   The specified load balancer does not exist.
2113//
2114//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2115//   The specified target group does not exist.
2116//
2117// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetGroups
2118func (c *ELBV2) DescribeTargetGroups(input *DescribeTargetGroupsInput) (*DescribeTargetGroupsOutput, error) {
2119	req, out := c.DescribeTargetGroupsRequest(input)
2120	return out, req.Send()
2121}
2122
2123// DescribeTargetGroupsWithContext is the same as DescribeTargetGroups with the addition of
2124// the ability to pass a context and additional request options.
2125//
2126// See DescribeTargetGroups for details on how to use this API operation.
2127//
2128// The context must be non-nil and will be used for request cancellation. If
2129// the context is nil a panic will occur. In the future the SDK may create
2130// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2131// for more information on using Contexts.
2132func (c *ELBV2) DescribeTargetGroupsWithContext(ctx aws.Context, input *DescribeTargetGroupsInput, opts ...request.Option) (*DescribeTargetGroupsOutput, error) {
2133	req, out := c.DescribeTargetGroupsRequest(input)
2134	req.SetContext(ctx)
2135	req.ApplyOptions(opts...)
2136	return out, req.Send()
2137}
2138
2139// DescribeTargetGroupsPages iterates over the pages of a DescribeTargetGroups operation,
2140// calling the "fn" function with the response data for each page. To stop
2141// iterating, return false from the fn function.
2142//
2143// See DescribeTargetGroups method for more information on how to use this operation.
2144//
2145// Note: This operation can generate multiple requests to a service.
2146//
2147//    // Example iterating over at most 3 pages of a DescribeTargetGroups operation.
2148//    pageNum := 0
2149//    err := client.DescribeTargetGroupsPages(params,
2150//        func(page *elbv2.DescribeTargetGroupsOutput, lastPage bool) bool {
2151//            pageNum++
2152//            fmt.Println(page)
2153//            return pageNum <= 3
2154//        })
2155//
2156func (c *ELBV2) DescribeTargetGroupsPages(input *DescribeTargetGroupsInput, fn func(*DescribeTargetGroupsOutput, bool) bool) error {
2157	return c.DescribeTargetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2158}
2159
2160// DescribeTargetGroupsPagesWithContext same as DescribeTargetGroupsPages except
2161// it takes a Context and allows setting request options on the pages.
2162//
2163// The context must be non-nil and will be used for request cancellation. If
2164// the context is nil a panic will occur. In the future the SDK may create
2165// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2166// for more information on using Contexts.
2167func (c *ELBV2) DescribeTargetGroupsPagesWithContext(ctx aws.Context, input *DescribeTargetGroupsInput, fn func(*DescribeTargetGroupsOutput, bool) bool, opts ...request.Option) error {
2168	p := request.Pagination{
2169		NewRequest: func() (*request.Request, error) {
2170			var inCpy *DescribeTargetGroupsInput
2171			if input != nil {
2172				tmp := *input
2173				inCpy = &tmp
2174			}
2175			req, _ := c.DescribeTargetGroupsRequest(inCpy)
2176			req.SetContext(ctx)
2177			req.ApplyOptions(opts...)
2178			return req, nil
2179		},
2180	}
2181
2182	for p.Next() {
2183		if !fn(p.Page().(*DescribeTargetGroupsOutput), !p.HasNextPage()) {
2184			break
2185		}
2186	}
2187
2188	return p.Err()
2189}
2190
2191const opDescribeTargetHealth = "DescribeTargetHealth"
2192
2193// DescribeTargetHealthRequest generates a "aws/request.Request" representing the
2194// client's request for the DescribeTargetHealth operation. The "output" return
2195// value will be populated with the request's response once the request completes
2196// successfully.
2197//
2198// Use "Send" method on the returned Request to send the API call to the service.
2199// the "output" return value is not valid until after Send returns without error.
2200//
2201// See DescribeTargetHealth for more information on using the DescribeTargetHealth
2202// API call, and error handling.
2203//
2204// This method is useful when you want to inject custom logic or configuration
2205// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2206//
2207//
2208//    // Example sending a request using the DescribeTargetHealthRequest method.
2209//    req, resp := client.DescribeTargetHealthRequest(params)
2210//
2211//    err := req.Send()
2212//    if err == nil { // resp is now filled
2213//        fmt.Println(resp)
2214//    }
2215//
2216// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth
2217func (c *ELBV2) DescribeTargetHealthRequest(input *DescribeTargetHealthInput) (req *request.Request, output *DescribeTargetHealthOutput) {
2218	op := &request.Operation{
2219		Name:       opDescribeTargetHealth,
2220		HTTPMethod: "POST",
2221		HTTPPath:   "/",
2222	}
2223
2224	if input == nil {
2225		input = &DescribeTargetHealthInput{}
2226	}
2227
2228	output = &DescribeTargetHealthOutput{}
2229	req = c.newRequest(op, input, output)
2230	return
2231}
2232
2233// DescribeTargetHealth API operation for Elastic Load Balancing.
2234//
2235// Describes the health of the specified targets or all of your targets.
2236//
2237// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2238// with awserr.Error's Code and Message methods to get detailed information about
2239// the error.
2240//
2241// See the AWS API reference guide for Elastic Load Balancing's
2242// API operation DescribeTargetHealth for usage and error information.
2243//
2244// Returned Error Codes:
2245//   * ErrCodeInvalidTargetException "InvalidTarget"
2246//   The specified target does not exist, is not in the same VPC as the target
2247//   group, or has an unsupported instance type.
2248//
2249//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2250//   The specified target group does not exist.
2251//
2252//   * ErrCodeHealthUnavailableException "HealthUnavailable"
2253//   The health of the specified targets could not be retrieved due to an internal
2254//   error.
2255//
2256// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/DescribeTargetHealth
2257func (c *ELBV2) DescribeTargetHealth(input *DescribeTargetHealthInput) (*DescribeTargetHealthOutput, error) {
2258	req, out := c.DescribeTargetHealthRequest(input)
2259	return out, req.Send()
2260}
2261
2262// DescribeTargetHealthWithContext is the same as DescribeTargetHealth with the addition of
2263// the ability to pass a context and additional request options.
2264//
2265// See DescribeTargetHealth for details on how to use this API operation.
2266//
2267// The context must be non-nil and will be used for request cancellation. If
2268// the context is nil a panic will occur. In the future the SDK may create
2269// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2270// for more information on using Contexts.
2271func (c *ELBV2) DescribeTargetHealthWithContext(ctx aws.Context, input *DescribeTargetHealthInput, opts ...request.Option) (*DescribeTargetHealthOutput, error) {
2272	req, out := c.DescribeTargetHealthRequest(input)
2273	req.SetContext(ctx)
2274	req.ApplyOptions(opts...)
2275	return out, req.Send()
2276}
2277
2278const opModifyListener = "ModifyListener"
2279
2280// ModifyListenerRequest generates a "aws/request.Request" representing the
2281// client's request for the ModifyListener operation. The "output" return
2282// value will be populated with the request's response once the request completes
2283// successfully.
2284//
2285// Use "Send" method on the returned Request to send the API call to the service.
2286// the "output" return value is not valid until after Send returns without error.
2287//
2288// See ModifyListener for more information on using the ModifyListener
2289// API call, and error handling.
2290//
2291// This method is useful when you want to inject custom logic or configuration
2292// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2293//
2294//
2295//    // Example sending a request using the ModifyListenerRequest method.
2296//    req, resp := client.ModifyListenerRequest(params)
2297//
2298//    err := req.Send()
2299//    if err == nil { // resp is now filled
2300//        fmt.Println(resp)
2301//    }
2302//
2303// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener
2304func (c *ELBV2) ModifyListenerRequest(input *ModifyListenerInput) (req *request.Request, output *ModifyListenerOutput) {
2305	op := &request.Operation{
2306		Name:       opModifyListener,
2307		HTTPMethod: "POST",
2308		HTTPPath:   "/",
2309	}
2310
2311	if input == nil {
2312		input = &ModifyListenerInput{}
2313	}
2314
2315	output = &ModifyListenerOutput{}
2316	req = c.newRequest(op, input, output)
2317	return
2318}
2319
2320// ModifyListener API operation for Elastic Load Balancing.
2321//
2322// Replaces the specified properties of the specified listener. Any properties
2323// that you do not specify remain unchanged.
2324//
2325// Changing the protocol from HTTPS to HTTP, or from TLS to TCP, removes the
2326// security policy and default certificate properties. If you change the protocol
2327// from HTTP to HTTPS, or from TCP to TLS, you must add the security policy
2328// and default certificate properties.
2329//
2330// To add an item to a list, remove an item from a list, or update an item in
2331// a list, you must provide the entire list. For example, to add an action,
2332// specify a list with the current actions plus the new action.
2333//
2334// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2335// with awserr.Error's Code and Message methods to get detailed information about
2336// the error.
2337//
2338// See the AWS API reference guide for Elastic Load Balancing's
2339// API operation ModifyListener for usage and error information.
2340//
2341// Returned Error Codes:
2342//   * ErrCodeDuplicateListenerException "DuplicateListener"
2343//   A listener with the specified port already exists.
2344//
2345//   * ErrCodeTooManyListenersException "TooManyListeners"
2346//   You've reached the limit on the number of listeners per load balancer.
2347//
2348//   * ErrCodeTooManyCertificatesException "TooManyCertificates"
2349//   You've reached the limit on the number of certificates per load balancer.
2350//
2351//   * ErrCodeListenerNotFoundException "ListenerNotFound"
2352//   The specified listener does not exist.
2353//
2354//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2355//   The specified target group does not exist.
2356//
2357//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
2358//   You've reached the limit on the number of load balancers per target group.
2359//
2360//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
2361//   The specified configuration is not valid with this protocol.
2362//
2363//   * ErrCodeSSLPolicyNotFoundException "SSLPolicyNotFound"
2364//   The specified SSL policy does not exist.
2365//
2366//   * ErrCodeCertificateNotFoundException "CertificateNotFound"
2367//   The specified certificate does not exist.
2368//
2369//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2370//   The requested configuration is not valid.
2371//
2372//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
2373//   The specified protocol is not supported.
2374//
2375//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2376//   You've reached the limit on the number of times a target can be registered
2377//   with a load balancer.
2378//
2379//   * ErrCodeTooManyTargetsException "TooManyTargets"
2380//   You've reached the limit on the number of targets.
2381//
2382//   * ErrCodeTooManyActionsException "TooManyActions"
2383//   You've reached the limit on the number of actions per rule.
2384//
2385//   * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction"
2386//   The requested action is not valid.
2387//
2388//   * ErrCodeTooManyUniqueTargetGroupsPerLoadBalancerException "TooManyUniqueTargetGroupsPerLoadBalancer"
2389//   You've reached the limit on the number of unique target groups per load balancer
2390//   across all listeners. If a target group is used by multiple actions for a
2391//   load balancer, it is counted as only one use.
2392//
2393//   * ErrCodeALPNPolicyNotSupportedException "ALPNPolicyNotFound"
2394//   The specified ALPN policy is not supported.
2395//
2396// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyListener
2397func (c *ELBV2) ModifyListener(input *ModifyListenerInput) (*ModifyListenerOutput, error) {
2398	req, out := c.ModifyListenerRequest(input)
2399	return out, req.Send()
2400}
2401
2402// ModifyListenerWithContext is the same as ModifyListener with the addition of
2403// the ability to pass a context and additional request options.
2404//
2405// See ModifyListener for details on how to use this API operation.
2406//
2407// The context must be non-nil and will be used for request cancellation. If
2408// the context is nil a panic will occur. In the future the SDK may create
2409// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2410// for more information on using Contexts.
2411func (c *ELBV2) ModifyListenerWithContext(ctx aws.Context, input *ModifyListenerInput, opts ...request.Option) (*ModifyListenerOutput, error) {
2412	req, out := c.ModifyListenerRequest(input)
2413	req.SetContext(ctx)
2414	req.ApplyOptions(opts...)
2415	return out, req.Send()
2416}
2417
2418const opModifyLoadBalancerAttributes = "ModifyLoadBalancerAttributes"
2419
2420// ModifyLoadBalancerAttributesRequest generates a "aws/request.Request" representing the
2421// client's request for the ModifyLoadBalancerAttributes operation. The "output" return
2422// value will be populated with the request's response once the request completes
2423// successfully.
2424//
2425// Use "Send" method on the returned Request to send the API call to the service.
2426// the "output" return value is not valid until after Send returns without error.
2427//
2428// See ModifyLoadBalancerAttributes for more information on using the ModifyLoadBalancerAttributes
2429// API call, and error handling.
2430//
2431// This method is useful when you want to inject custom logic or configuration
2432// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2433//
2434//
2435//    // Example sending a request using the ModifyLoadBalancerAttributesRequest method.
2436//    req, resp := client.ModifyLoadBalancerAttributesRequest(params)
2437//
2438//    err := req.Send()
2439//    if err == nil { // resp is now filled
2440//        fmt.Println(resp)
2441//    }
2442//
2443// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes
2444func (c *ELBV2) ModifyLoadBalancerAttributesRequest(input *ModifyLoadBalancerAttributesInput) (req *request.Request, output *ModifyLoadBalancerAttributesOutput) {
2445	op := &request.Operation{
2446		Name:       opModifyLoadBalancerAttributes,
2447		HTTPMethod: "POST",
2448		HTTPPath:   "/",
2449	}
2450
2451	if input == nil {
2452		input = &ModifyLoadBalancerAttributesInput{}
2453	}
2454
2455	output = &ModifyLoadBalancerAttributesOutput{}
2456	req = c.newRequest(op, input, output)
2457	return
2458}
2459
2460// ModifyLoadBalancerAttributes API operation for Elastic Load Balancing.
2461//
2462// Modifies the specified attributes of the specified Application Load Balancer,
2463// Network Load Balancer, or Gateway Load Balancer.
2464//
2465// If any of the specified attributes can't be modified as requested, the call
2466// fails. Any existing attributes that you do not modify retain their current
2467// values.
2468//
2469// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2470// with awserr.Error's Code and Message methods to get detailed information about
2471// the error.
2472//
2473// See the AWS API reference guide for Elastic Load Balancing's
2474// API operation ModifyLoadBalancerAttributes for usage and error information.
2475//
2476// Returned Error Codes:
2477//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
2478//   The specified load balancer does not exist.
2479//
2480//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2481//   The requested configuration is not valid.
2482//
2483// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyLoadBalancerAttributes
2484func (c *ELBV2) ModifyLoadBalancerAttributes(input *ModifyLoadBalancerAttributesInput) (*ModifyLoadBalancerAttributesOutput, error) {
2485	req, out := c.ModifyLoadBalancerAttributesRequest(input)
2486	return out, req.Send()
2487}
2488
2489// ModifyLoadBalancerAttributesWithContext is the same as ModifyLoadBalancerAttributes with the addition of
2490// the ability to pass a context and additional request options.
2491//
2492// See ModifyLoadBalancerAttributes for details on how to use this API operation.
2493//
2494// The context must be non-nil and will be used for request cancellation. If
2495// the context is nil a panic will occur. In the future the SDK may create
2496// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2497// for more information on using Contexts.
2498func (c *ELBV2) ModifyLoadBalancerAttributesWithContext(ctx aws.Context, input *ModifyLoadBalancerAttributesInput, opts ...request.Option) (*ModifyLoadBalancerAttributesOutput, error) {
2499	req, out := c.ModifyLoadBalancerAttributesRequest(input)
2500	req.SetContext(ctx)
2501	req.ApplyOptions(opts...)
2502	return out, req.Send()
2503}
2504
2505const opModifyRule = "ModifyRule"
2506
2507// ModifyRuleRequest generates a "aws/request.Request" representing the
2508// client's request for the ModifyRule operation. The "output" return
2509// value will be populated with the request's response once the request completes
2510// successfully.
2511//
2512// Use "Send" method on the returned Request to send the API call to the service.
2513// the "output" return value is not valid until after Send returns without error.
2514//
2515// See ModifyRule for more information on using the ModifyRule
2516// API call, and error handling.
2517//
2518// This method is useful when you want to inject custom logic or configuration
2519// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2520//
2521//
2522//    // Example sending a request using the ModifyRuleRequest method.
2523//    req, resp := client.ModifyRuleRequest(params)
2524//
2525//    err := req.Send()
2526//    if err == nil { // resp is now filled
2527//        fmt.Println(resp)
2528//    }
2529//
2530// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule
2531func (c *ELBV2) ModifyRuleRequest(input *ModifyRuleInput) (req *request.Request, output *ModifyRuleOutput) {
2532	op := &request.Operation{
2533		Name:       opModifyRule,
2534		HTTPMethod: "POST",
2535		HTTPPath:   "/",
2536	}
2537
2538	if input == nil {
2539		input = &ModifyRuleInput{}
2540	}
2541
2542	output = &ModifyRuleOutput{}
2543	req = c.newRequest(op, input, output)
2544	return
2545}
2546
2547// ModifyRule API operation for Elastic Load Balancing.
2548//
2549// Replaces the specified properties of the specified rule. Any properties that
2550// you do not specify are unchanged.
2551//
2552// To add an item to a list, remove an item from a list, or update an item in
2553// a list, you must provide the entire list. For example, to add an action,
2554// specify a list with the current actions plus the new action.
2555//
2556// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2557// with awserr.Error's Code and Message methods to get detailed information about
2558// the error.
2559//
2560// See the AWS API reference guide for Elastic Load Balancing's
2561// API operation ModifyRule for usage and error information.
2562//
2563// Returned Error Codes:
2564//   * ErrCodeTargetGroupAssociationLimitException "TargetGroupAssociationLimit"
2565//   You've reached the limit on the number of load balancers per target group.
2566//
2567//   * ErrCodeIncompatibleProtocolsException "IncompatibleProtocols"
2568//   The specified configuration is not valid with this protocol.
2569//
2570//   * ErrCodeRuleNotFoundException "RuleNotFound"
2571//   The specified rule does not exist.
2572//
2573//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
2574//   This operation is not allowed.
2575//
2576//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2577//   You've reached the limit on the number of times a target can be registered
2578//   with a load balancer.
2579//
2580//   * ErrCodeTooManyTargetsException "TooManyTargets"
2581//   You've reached the limit on the number of targets.
2582//
2583//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2584//   The specified target group does not exist.
2585//
2586//   * ErrCodeUnsupportedProtocolException "UnsupportedProtocol"
2587//   The specified protocol is not supported.
2588//
2589//   * ErrCodeTooManyActionsException "TooManyActions"
2590//   You've reached the limit on the number of actions per rule.
2591//
2592//   * ErrCodeInvalidLoadBalancerActionException "InvalidLoadBalancerAction"
2593//   The requested action is not valid.
2594//
2595//   * ErrCodeTooManyUniqueTargetGroupsPerLoadBalancerException "TooManyUniqueTargetGroupsPerLoadBalancer"
2596//   You've reached the limit on the number of unique target groups per load balancer
2597//   across all listeners. If a target group is used by multiple actions for a
2598//   load balancer, it is counted as only one use.
2599//
2600// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyRule
2601func (c *ELBV2) ModifyRule(input *ModifyRuleInput) (*ModifyRuleOutput, error) {
2602	req, out := c.ModifyRuleRequest(input)
2603	return out, req.Send()
2604}
2605
2606// ModifyRuleWithContext is the same as ModifyRule with the addition of
2607// the ability to pass a context and additional request options.
2608//
2609// See ModifyRule for details on how to use this API operation.
2610//
2611// The context must be non-nil and will be used for request cancellation. If
2612// the context is nil a panic will occur. In the future the SDK may create
2613// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2614// for more information on using Contexts.
2615func (c *ELBV2) ModifyRuleWithContext(ctx aws.Context, input *ModifyRuleInput, opts ...request.Option) (*ModifyRuleOutput, error) {
2616	req, out := c.ModifyRuleRequest(input)
2617	req.SetContext(ctx)
2618	req.ApplyOptions(opts...)
2619	return out, req.Send()
2620}
2621
2622const opModifyTargetGroup = "ModifyTargetGroup"
2623
2624// ModifyTargetGroupRequest generates a "aws/request.Request" representing the
2625// client's request for the ModifyTargetGroup operation. The "output" return
2626// value will be populated with the request's response once the request completes
2627// successfully.
2628//
2629// Use "Send" method on the returned Request to send the API call to the service.
2630// the "output" return value is not valid until after Send returns without error.
2631//
2632// See ModifyTargetGroup for more information on using the ModifyTargetGroup
2633// API call, and error handling.
2634//
2635// This method is useful when you want to inject custom logic or configuration
2636// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2637//
2638//
2639//    // Example sending a request using the ModifyTargetGroupRequest method.
2640//    req, resp := client.ModifyTargetGroupRequest(params)
2641//
2642//    err := req.Send()
2643//    if err == nil { // resp is now filled
2644//        fmt.Println(resp)
2645//    }
2646//
2647// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup
2648func (c *ELBV2) ModifyTargetGroupRequest(input *ModifyTargetGroupInput) (req *request.Request, output *ModifyTargetGroupOutput) {
2649	op := &request.Operation{
2650		Name:       opModifyTargetGroup,
2651		HTTPMethod: "POST",
2652		HTTPPath:   "/",
2653	}
2654
2655	if input == nil {
2656		input = &ModifyTargetGroupInput{}
2657	}
2658
2659	output = &ModifyTargetGroupOutput{}
2660	req = c.newRequest(op, input, output)
2661	return
2662}
2663
2664// ModifyTargetGroup API operation for Elastic Load Balancing.
2665//
2666// Modifies the health checks used when evaluating the health state of the targets
2667// in the specified target group.
2668//
2669// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2670// with awserr.Error's Code and Message methods to get detailed information about
2671// the error.
2672//
2673// See the AWS API reference guide for Elastic Load Balancing's
2674// API operation ModifyTargetGroup for usage and error information.
2675//
2676// Returned Error Codes:
2677//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2678//   The specified target group does not exist.
2679//
2680//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2681//   The requested configuration is not valid.
2682//
2683// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroup
2684func (c *ELBV2) ModifyTargetGroup(input *ModifyTargetGroupInput) (*ModifyTargetGroupOutput, error) {
2685	req, out := c.ModifyTargetGroupRequest(input)
2686	return out, req.Send()
2687}
2688
2689// ModifyTargetGroupWithContext is the same as ModifyTargetGroup with the addition of
2690// the ability to pass a context and additional request options.
2691//
2692// See ModifyTargetGroup for details on how to use this API operation.
2693//
2694// The context must be non-nil and will be used for request cancellation. If
2695// the context is nil a panic will occur. In the future the SDK may create
2696// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2697// for more information on using Contexts.
2698func (c *ELBV2) ModifyTargetGroupWithContext(ctx aws.Context, input *ModifyTargetGroupInput, opts ...request.Option) (*ModifyTargetGroupOutput, error) {
2699	req, out := c.ModifyTargetGroupRequest(input)
2700	req.SetContext(ctx)
2701	req.ApplyOptions(opts...)
2702	return out, req.Send()
2703}
2704
2705const opModifyTargetGroupAttributes = "ModifyTargetGroupAttributes"
2706
2707// ModifyTargetGroupAttributesRequest generates a "aws/request.Request" representing the
2708// client's request for the ModifyTargetGroupAttributes operation. The "output" return
2709// value will be populated with the request's response once the request completes
2710// successfully.
2711//
2712// Use "Send" method on the returned Request to send the API call to the service.
2713// the "output" return value is not valid until after Send returns without error.
2714//
2715// See ModifyTargetGroupAttributes for more information on using the ModifyTargetGroupAttributes
2716// API call, and error handling.
2717//
2718// This method is useful when you want to inject custom logic or configuration
2719// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2720//
2721//
2722//    // Example sending a request using the ModifyTargetGroupAttributesRequest method.
2723//    req, resp := client.ModifyTargetGroupAttributesRequest(params)
2724//
2725//    err := req.Send()
2726//    if err == nil { // resp is now filled
2727//        fmt.Println(resp)
2728//    }
2729//
2730// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes
2731func (c *ELBV2) ModifyTargetGroupAttributesRequest(input *ModifyTargetGroupAttributesInput) (req *request.Request, output *ModifyTargetGroupAttributesOutput) {
2732	op := &request.Operation{
2733		Name:       opModifyTargetGroupAttributes,
2734		HTTPMethod: "POST",
2735		HTTPPath:   "/",
2736	}
2737
2738	if input == nil {
2739		input = &ModifyTargetGroupAttributesInput{}
2740	}
2741
2742	output = &ModifyTargetGroupAttributesOutput{}
2743	req = c.newRequest(op, input, output)
2744	return
2745}
2746
2747// ModifyTargetGroupAttributes API operation for Elastic Load Balancing.
2748//
2749// Modifies the specified attributes of the specified target group.
2750//
2751// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2752// with awserr.Error's Code and Message methods to get detailed information about
2753// the error.
2754//
2755// See the AWS API reference guide for Elastic Load Balancing's
2756// API operation ModifyTargetGroupAttributes for usage and error information.
2757//
2758// Returned Error Codes:
2759//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2760//   The specified target group does not exist.
2761//
2762//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
2763//   The requested configuration is not valid.
2764//
2765// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/ModifyTargetGroupAttributes
2766func (c *ELBV2) ModifyTargetGroupAttributes(input *ModifyTargetGroupAttributesInput) (*ModifyTargetGroupAttributesOutput, error) {
2767	req, out := c.ModifyTargetGroupAttributesRequest(input)
2768	return out, req.Send()
2769}
2770
2771// ModifyTargetGroupAttributesWithContext is the same as ModifyTargetGroupAttributes with the addition of
2772// the ability to pass a context and additional request options.
2773//
2774// See ModifyTargetGroupAttributes for details on how to use this API operation.
2775//
2776// The context must be non-nil and will be used for request cancellation. If
2777// the context is nil a panic will occur. In the future the SDK may create
2778// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2779// for more information on using Contexts.
2780func (c *ELBV2) ModifyTargetGroupAttributesWithContext(ctx aws.Context, input *ModifyTargetGroupAttributesInput, opts ...request.Option) (*ModifyTargetGroupAttributesOutput, error) {
2781	req, out := c.ModifyTargetGroupAttributesRequest(input)
2782	req.SetContext(ctx)
2783	req.ApplyOptions(opts...)
2784	return out, req.Send()
2785}
2786
2787const opRegisterTargets = "RegisterTargets"
2788
2789// RegisterTargetsRequest generates a "aws/request.Request" representing the
2790// client's request for the RegisterTargets operation. The "output" return
2791// value will be populated with the request's response once the request completes
2792// successfully.
2793//
2794// Use "Send" method on the returned Request to send the API call to the service.
2795// the "output" return value is not valid until after Send returns without error.
2796//
2797// See RegisterTargets for more information on using the RegisterTargets
2798// API call, and error handling.
2799//
2800// This method is useful when you want to inject custom logic or configuration
2801// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2802//
2803//
2804//    // Example sending a request using the RegisterTargetsRequest method.
2805//    req, resp := client.RegisterTargetsRequest(params)
2806//
2807//    err := req.Send()
2808//    if err == nil { // resp is now filled
2809//        fmt.Println(resp)
2810//    }
2811//
2812// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets
2813func (c *ELBV2) RegisterTargetsRequest(input *RegisterTargetsInput) (req *request.Request, output *RegisterTargetsOutput) {
2814	op := &request.Operation{
2815		Name:       opRegisterTargets,
2816		HTTPMethod: "POST",
2817		HTTPPath:   "/",
2818	}
2819
2820	if input == nil {
2821		input = &RegisterTargetsInput{}
2822	}
2823
2824	output = &RegisterTargetsOutput{}
2825	req = c.newRequest(op, input, output)
2826	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2827	return
2828}
2829
2830// RegisterTargets API operation for Elastic Load Balancing.
2831//
2832// Registers the specified targets with the specified target group.
2833//
2834// If the target is an EC2 instance, it must be in the running state when you
2835// register it.
2836//
2837// By default, the load balancer routes requests to registered targets using
2838// the protocol and port for the target group. Alternatively, you can override
2839// the port for a target when you register it. You can register each EC2 instance
2840// or IP address with the same target group multiple times using different ports.
2841//
2842// With a Network Load Balancer, you cannot register instances by instance ID
2843// if they have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1,
2844// G1, G2, HI1, HS1, M1, M2, M3, and T1. You can register instances of these
2845// types by IP address.
2846//
2847// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2848// with awserr.Error's Code and Message methods to get detailed information about
2849// the error.
2850//
2851// See the AWS API reference guide for Elastic Load Balancing's
2852// API operation RegisterTargets for usage and error information.
2853//
2854// Returned Error Codes:
2855//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
2856//   The specified target group does not exist.
2857//
2858//   * ErrCodeTooManyTargetsException "TooManyTargets"
2859//   You've reached the limit on the number of targets.
2860//
2861//   * ErrCodeInvalidTargetException "InvalidTarget"
2862//   The specified target does not exist, is not in the same VPC as the target
2863//   group, or has an unsupported instance type.
2864//
2865//   * ErrCodeTooManyRegistrationsForTargetIdException "TooManyRegistrationsForTargetId"
2866//   You've reached the limit on the number of times a target can be registered
2867//   with a load balancer.
2868//
2869// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RegisterTargets
2870func (c *ELBV2) RegisterTargets(input *RegisterTargetsInput) (*RegisterTargetsOutput, error) {
2871	req, out := c.RegisterTargetsRequest(input)
2872	return out, req.Send()
2873}
2874
2875// RegisterTargetsWithContext is the same as RegisterTargets with the addition of
2876// the ability to pass a context and additional request options.
2877//
2878// See RegisterTargets for details on how to use this API operation.
2879//
2880// The context must be non-nil and will be used for request cancellation. If
2881// the context is nil a panic will occur. In the future the SDK may create
2882// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2883// for more information on using Contexts.
2884func (c *ELBV2) RegisterTargetsWithContext(ctx aws.Context, input *RegisterTargetsInput, opts ...request.Option) (*RegisterTargetsOutput, error) {
2885	req, out := c.RegisterTargetsRequest(input)
2886	req.SetContext(ctx)
2887	req.ApplyOptions(opts...)
2888	return out, req.Send()
2889}
2890
2891const opRemoveListenerCertificates = "RemoveListenerCertificates"
2892
2893// RemoveListenerCertificatesRequest generates a "aws/request.Request" representing the
2894// client's request for the RemoveListenerCertificates operation. The "output" return
2895// value will be populated with the request's response once the request completes
2896// successfully.
2897//
2898// Use "Send" method on the returned Request to send the API call to the service.
2899// the "output" return value is not valid until after Send returns without error.
2900//
2901// See RemoveListenerCertificates for more information on using the RemoveListenerCertificates
2902// API call, and error handling.
2903//
2904// This method is useful when you want to inject custom logic or configuration
2905// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2906//
2907//
2908//    // Example sending a request using the RemoveListenerCertificatesRequest method.
2909//    req, resp := client.RemoveListenerCertificatesRequest(params)
2910//
2911//    err := req.Send()
2912//    if err == nil { // resp is now filled
2913//        fmt.Println(resp)
2914//    }
2915//
2916// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveListenerCertificates
2917func (c *ELBV2) RemoveListenerCertificatesRequest(input *RemoveListenerCertificatesInput) (req *request.Request, output *RemoveListenerCertificatesOutput) {
2918	op := &request.Operation{
2919		Name:       opRemoveListenerCertificates,
2920		HTTPMethod: "POST",
2921		HTTPPath:   "/",
2922	}
2923
2924	if input == nil {
2925		input = &RemoveListenerCertificatesInput{}
2926	}
2927
2928	output = &RemoveListenerCertificatesOutput{}
2929	req = c.newRequest(op, input, output)
2930	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2931	return
2932}
2933
2934// RemoveListenerCertificates API operation for Elastic Load Balancing.
2935//
2936// Removes the specified certificate from the certificate list for the specified
2937// HTTPS or TLS listener.
2938//
2939// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2940// with awserr.Error's Code and Message methods to get detailed information about
2941// the error.
2942//
2943// See the AWS API reference guide for Elastic Load Balancing's
2944// API operation RemoveListenerCertificates for usage and error information.
2945//
2946// Returned Error Codes:
2947//   * ErrCodeListenerNotFoundException "ListenerNotFound"
2948//   The specified listener does not exist.
2949//
2950//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
2951//   This operation is not allowed.
2952//
2953// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveListenerCertificates
2954func (c *ELBV2) RemoveListenerCertificates(input *RemoveListenerCertificatesInput) (*RemoveListenerCertificatesOutput, error) {
2955	req, out := c.RemoveListenerCertificatesRequest(input)
2956	return out, req.Send()
2957}
2958
2959// RemoveListenerCertificatesWithContext is the same as RemoveListenerCertificates with the addition of
2960// the ability to pass a context and additional request options.
2961//
2962// See RemoveListenerCertificates for details on how to use this API operation.
2963//
2964// The context must be non-nil and will be used for request cancellation. If
2965// the context is nil a panic will occur. In the future the SDK may create
2966// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2967// for more information on using Contexts.
2968func (c *ELBV2) RemoveListenerCertificatesWithContext(ctx aws.Context, input *RemoveListenerCertificatesInput, opts ...request.Option) (*RemoveListenerCertificatesOutput, error) {
2969	req, out := c.RemoveListenerCertificatesRequest(input)
2970	req.SetContext(ctx)
2971	req.ApplyOptions(opts...)
2972	return out, req.Send()
2973}
2974
2975const opRemoveTags = "RemoveTags"
2976
2977// RemoveTagsRequest generates a "aws/request.Request" representing the
2978// client's request for the RemoveTags operation. The "output" return
2979// value will be populated with the request's response once the request completes
2980// successfully.
2981//
2982// Use "Send" method on the returned Request to send the API call to the service.
2983// the "output" return value is not valid until after Send returns without error.
2984//
2985// See RemoveTags for more information on using the RemoveTags
2986// API call, and error handling.
2987//
2988// This method is useful when you want to inject custom logic or configuration
2989// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2990//
2991//
2992//    // Example sending a request using the RemoveTagsRequest method.
2993//    req, resp := client.RemoveTagsRequest(params)
2994//
2995//    err := req.Send()
2996//    if err == nil { // resp is now filled
2997//        fmt.Println(resp)
2998//    }
2999//
3000// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags
3001func (c *ELBV2) RemoveTagsRequest(input *RemoveTagsInput) (req *request.Request, output *RemoveTagsOutput) {
3002	op := &request.Operation{
3003		Name:       opRemoveTags,
3004		HTTPMethod: "POST",
3005		HTTPPath:   "/",
3006	}
3007
3008	if input == nil {
3009		input = &RemoveTagsInput{}
3010	}
3011
3012	output = &RemoveTagsOutput{}
3013	req = c.newRequest(op, input, output)
3014	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3015	return
3016}
3017
3018// RemoveTags API operation for Elastic Load Balancing.
3019//
3020// Removes the specified tags from the specified Elastic Load Balancing resources.
3021// You can remove the tags for one or more Application Load Balancers, Network
3022// Load Balancers, Gateway Load Balancers, target groups, listeners, or rules.
3023//
3024// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3025// with awserr.Error's Code and Message methods to get detailed information about
3026// the error.
3027//
3028// See the AWS API reference guide for Elastic Load Balancing's
3029// API operation RemoveTags for usage and error information.
3030//
3031// Returned Error Codes:
3032//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
3033//   The specified load balancer does not exist.
3034//
3035//   * ErrCodeTargetGroupNotFoundException "TargetGroupNotFound"
3036//   The specified target group does not exist.
3037//
3038//   * ErrCodeListenerNotFoundException "ListenerNotFound"
3039//   The specified listener does not exist.
3040//
3041//   * ErrCodeRuleNotFoundException "RuleNotFound"
3042//   The specified rule does not exist.
3043//
3044//   * ErrCodeTooManyTagsException "TooManyTags"
3045//   You've reached the limit on the number of tags per load balancer.
3046//
3047// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/RemoveTags
3048func (c *ELBV2) RemoveTags(input *RemoveTagsInput) (*RemoveTagsOutput, error) {
3049	req, out := c.RemoveTagsRequest(input)
3050	return out, req.Send()
3051}
3052
3053// RemoveTagsWithContext is the same as RemoveTags with the addition of
3054// the ability to pass a context and additional request options.
3055//
3056// See RemoveTags for details on how to use this API operation.
3057//
3058// The context must be non-nil and will be used for request cancellation. If
3059// the context is nil a panic will occur. In the future the SDK may create
3060// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3061// for more information on using Contexts.
3062func (c *ELBV2) RemoveTagsWithContext(ctx aws.Context, input *RemoveTagsInput, opts ...request.Option) (*RemoveTagsOutput, error) {
3063	req, out := c.RemoveTagsRequest(input)
3064	req.SetContext(ctx)
3065	req.ApplyOptions(opts...)
3066	return out, req.Send()
3067}
3068
3069const opSetIpAddressType = "SetIpAddressType"
3070
3071// SetIpAddressTypeRequest generates a "aws/request.Request" representing the
3072// client's request for the SetIpAddressType operation. The "output" return
3073// value will be populated with the request's response once the request completes
3074// successfully.
3075//
3076// Use "Send" method on the returned Request to send the API call to the service.
3077// the "output" return value is not valid until after Send returns without error.
3078//
3079// See SetIpAddressType for more information on using the SetIpAddressType
3080// API call, and error handling.
3081//
3082// This method is useful when you want to inject custom logic or configuration
3083// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3084//
3085//
3086//    // Example sending a request using the SetIpAddressTypeRequest method.
3087//    req, resp := client.SetIpAddressTypeRequest(params)
3088//
3089//    err := req.Send()
3090//    if err == nil { // resp is now filled
3091//        fmt.Println(resp)
3092//    }
3093//
3094// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType
3095func (c *ELBV2) SetIpAddressTypeRequest(input *SetIpAddressTypeInput) (req *request.Request, output *SetIpAddressTypeOutput) {
3096	op := &request.Operation{
3097		Name:       opSetIpAddressType,
3098		HTTPMethod: "POST",
3099		HTTPPath:   "/",
3100	}
3101
3102	if input == nil {
3103		input = &SetIpAddressTypeInput{}
3104	}
3105
3106	output = &SetIpAddressTypeOutput{}
3107	req = c.newRequest(op, input, output)
3108	return
3109}
3110
3111// SetIpAddressType API operation for Elastic Load Balancing.
3112//
3113// Sets the type of IP addresses used by the subnets of the specified Application
3114// Load Balancer or Network Load Balancer.
3115//
3116// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3117// with awserr.Error's Code and Message methods to get detailed information about
3118// the error.
3119//
3120// See the AWS API reference guide for Elastic Load Balancing's
3121// API operation SetIpAddressType for usage and error information.
3122//
3123// Returned Error Codes:
3124//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
3125//   The specified load balancer does not exist.
3126//
3127//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
3128//   The requested configuration is not valid.
3129//
3130//   * ErrCodeInvalidSubnetException "InvalidSubnet"
3131//   The specified subnet is out of available addresses.
3132//
3133// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetIpAddressType
3134func (c *ELBV2) SetIpAddressType(input *SetIpAddressTypeInput) (*SetIpAddressTypeOutput, error) {
3135	req, out := c.SetIpAddressTypeRequest(input)
3136	return out, req.Send()
3137}
3138
3139// SetIpAddressTypeWithContext is the same as SetIpAddressType with the addition of
3140// the ability to pass a context and additional request options.
3141//
3142// See SetIpAddressType for details on how to use this API operation.
3143//
3144// The context must be non-nil and will be used for request cancellation. If
3145// the context is nil a panic will occur. In the future the SDK may create
3146// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3147// for more information on using Contexts.
3148func (c *ELBV2) SetIpAddressTypeWithContext(ctx aws.Context, input *SetIpAddressTypeInput, opts ...request.Option) (*SetIpAddressTypeOutput, error) {
3149	req, out := c.SetIpAddressTypeRequest(input)
3150	req.SetContext(ctx)
3151	req.ApplyOptions(opts...)
3152	return out, req.Send()
3153}
3154
3155const opSetRulePriorities = "SetRulePriorities"
3156
3157// SetRulePrioritiesRequest generates a "aws/request.Request" representing the
3158// client's request for the SetRulePriorities operation. The "output" return
3159// value will be populated with the request's response once the request completes
3160// successfully.
3161//
3162// Use "Send" method on the returned Request to send the API call to the service.
3163// the "output" return value is not valid until after Send returns without error.
3164//
3165// See SetRulePriorities for more information on using the SetRulePriorities
3166// API call, and error handling.
3167//
3168// This method is useful when you want to inject custom logic or configuration
3169// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3170//
3171//
3172//    // Example sending a request using the SetRulePrioritiesRequest method.
3173//    req, resp := client.SetRulePrioritiesRequest(params)
3174//
3175//    err := req.Send()
3176//    if err == nil { // resp is now filled
3177//        fmt.Println(resp)
3178//    }
3179//
3180// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities
3181func (c *ELBV2) SetRulePrioritiesRequest(input *SetRulePrioritiesInput) (req *request.Request, output *SetRulePrioritiesOutput) {
3182	op := &request.Operation{
3183		Name:       opSetRulePriorities,
3184		HTTPMethod: "POST",
3185		HTTPPath:   "/",
3186	}
3187
3188	if input == nil {
3189		input = &SetRulePrioritiesInput{}
3190	}
3191
3192	output = &SetRulePrioritiesOutput{}
3193	req = c.newRequest(op, input, output)
3194	return
3195}
3196
3197// SetRulePriorities API operation for Elastic Load Balancing.
3198//
3199// Sets the priorities of the specified rules.
3200//
3201// You can reorder the rules as long as there are no priority conflicts in the
3202// new order. Any existing rules that you do not specify retain their current
3203// priority.
3204//
3205// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3206// with awserr.Error's Code and Message methods to get detailed information about
3207// the error.
3208//
3209// See the AWS API reference guide for Elastic Load Balancing's
3210// API operation SetRulePriorities for usage and error information.
3211//
3212// Returned Error Codes:
3213//   * ErrCodeRuleNotFoundException "RuleNotFound"
3214//   The specified rule does not exist.
3215//
3216//   * ErrCodePriorityInUseException "PriorityInUse"
3217//   The specified priority is in use.
3218//
3219//   * ErrCodeOperationNotPermittedException "OperationNotPermitted"
3220//   This operation is not allowed.
3221//
3222// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetRulePriorities
3223func (c *ELBV2) SetRulePriorities(input *SetRulePrioritiesInput) (*SetRulePrioritiesOutput, error) {
3224	req, out := c.SetRulePrioritiesRequest(input)
3225	return out, req.Send()
3226}
3227
3228// SetRulePrioritiesWithContext is the same as SetRulePriorities with the addition of
3229// the ability to pass a context and additional request options.
3230//
3231// See SetRulePriorities for details on how to use this API operation.
3232//
3233// The context must be non-nil and will be used for request cancellation. If
3234// the context is nil a panic will occur. In the future the SDK may create
3235// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3236// for more information on using Contexts.
3237func (c *ELBV2) SetRulePrioritiesWithContext(ctx aws.Context, input *SetRulePrioritiesInput, opts ...request.Option) (*SetRulePrioritiesOutput, error) {
3238	req, out := c.SetRulePrioritiesRequest(input)
3239	req.SetContext(ctx)
3240	req.ApplyOptions(opts...)
3241	return out, req.Send()
3242}
3243
3244const opSetSecurityGroups = "SetSecurityGroups"
3245
3246// SetSecurityGroupsRequest generates a "aws/request.Request" representing the
3247// client's request for the SetSecurityGroups operation. The "output" return
3248// value will be populated with the request's response once the request completes
3249// successfully.
3250//
3251// Use "Send" method on the returned Request to send the API call to the service.
3252// the "output" return value is not valid until after Send returns without error.
3253//
3254// See SetSecurityGroups for more information on using the SetSecurityGroups
3255// API call, and error handling.
3256//
3257// This method is useful when you want to inject custom logic or configuration
3258// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3259//
3260//
3261//    // Example sending a request using the SetSecurityGroupsRequest method.
3262//    req, resp := client.SetSecurityGroupsRequest(params)
3263//
3264//    err := req.Send()
3265//    if err == nil { // resp is now filled
3266//        fmt.Println(resp)
3267//    }
3268//
3269// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups
3270func (c *ELBV2) SetSecurityGroupsRequest(input *SetSecurityGroupsInput) (req *request.Request, output *SetSecurityGroupsOutput) {
3271	op := &request.Operation{
3272		Name:       opSetSecurityGroups,
3273		HTTPMethod: "POST",
3274		HTTPPath:   "/",
3275	}
3276
3277	if input == nil {
3278		input = &SetSecurityGroupsInput{}
3279	}
3280
3281	output = &SetSecurityGroupsOutput{}
3282	req = c.newRequest(op, input, output)
3283	return
3284}
3285
3286// SetSecurityGroups API operation for Elastic Load Balancing.
3287//
3288// Associates the specified security groups with the specified Application Load
3289// Balancer. The specified security groups override the previously associated
3290// security groups.
3291//
3292// You can't specify a security group for a Network Load Balancer or Gateway
3293// Load Balancer.
3294//
3295// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3296// with awserr.Error's Code and Message methods to get detailed information about
3297// the error.
3298//
3299// See the AWS API reference guide for Elastic Load Balancing's
3300// API operation SetSecurityGroups for usage and error information.
3301//
3302// Returned Error Codes:
3303//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
3304//   The specified load balancer does not exist.
3305//
3306//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
3307//   The requested configuration is not valid.
3308//
3309//   * ErrCodeInvalidSecurityGroupException "InvalidSecurityGroup"
3310//   The specified security group does not exist.
3311//
3312// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSecurityGroups
3313func (c *ELBV2) SetSecurityGroups(input *SetSecurityGroupsInput) (*SetSecurityGroupsOutput, error) {
3314	req, out := c.SetSecurityGroupsRequest(input)
3315	return out, req.Send()
3316}
3317
3318// SetSecurityGroupsWithContext is the same as SetSecurityGroups with the addition of
3319// the ability to pass a context and additional request options.
3320//
3321// See SetSecurityGroups for details on how to use this API operation.
3322//
3323// The context must be non-nil and will be used for request cancellation. If
3324// the context is nil a panic will occur. In the future the SDK may create
3325// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3326// for more information on using Contexts.
3327func (c *ELBV2) SetSecurityGroupsWithContext(ctx aws.Context, input *SetSecurityGroupsInput, opts ...request.Option) (*SetSecurityGroupsOutput, error) {
3328	req, out := c.SetSecurityGroupsRequest(input)
3329	req.SetContext(ctx)
3330	req.ApplyOptions(opts...)
3331	return out, req.Send()
3332}
3333
3334const opSetSubnets = "SetSubnets"
3335
3336// SetSubnetsRequest generates a "aws/request.Request" representing the
3337// client's request for the SetSubnets operation. The "output" return
3338// value will be populated with the request's response once the request completes
3339// successfully.
3340//
3341// Use "Send" method on the returned Request to send the API call to the service.
3342// the "output" return value is not valid until after Send returns without error.
3343//
3344// See SetSubnets for more information on using the SetSubnets
3345// API call, and error handling.
3346//
3347// This method is useful when you want to inject custom logic or configuration
3348// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3349//
3350//
3351//    // Example sending a request using the SetSubnetsRequest method.
3352//    req, resp := client.SetSubnetsRequest(params)
3353//
3354//    err := req.Send()
3355//    if err == nil { // resp is now filled
3356//        fmt.Println(resp)
3357//    }
3358//
3359// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets
3360func (c *ELBV2) SetSubnetsRequest(input *SetSubnetsInput) (req *request.Request, output *SetSubnetsOutput) {
3361	op := &request.Operation{
3362		Name:       opSetSubnets,
3363		HTTPMethod: "POST",
3364		HTTPPath:   "/",
3365	}
3366
3367	if input == nil {
3368		input = &SetSubnetsInput{}
3369	}
3370
3371	output = &SetSubnetsOutput{}
3372	req = c.newRequest(op, input, output)
3373	return
3374}
3375
3376// SetSubnets API operation for Elastic Load Balancing.
3377//
3378// Enables the Availability Zones for the specified public subnets for the specified
3379// Application Load Balancer or Network Load Balancer. The specified subnets
3380// replace the previously enabled subnets.
3381//
3382// When you specify subnets for a Network Load Balancer, you must include all
3383// subnets that were enabled previously, with their existing configurations,
3384// plus any additional subnets.
3385//
3386// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3387// with awserr.Error's Code and Message methods to get detailed information about
3388// the error.
3389//
3390// See the AWS API reference guide for Elastic Load Balancing's
3391// API operation SetSubnets for usage and error information.
3392//
3393// Returned Error Codes:
3394//   * ErrCodeLoadBalancerNotFoundException "LoadBalancerNotFound"
3395//   The specified load balancer does not exist.
3396//
3397//   * ErrCodeInvalidConfigurationRequestException "InvalidConfigurationRequest"
3398//   The requested configuration is not valid.
3399//
3400//   * ErrCodeSubnetNotFoundException "SubnetNotFound"
3401//   The specified subnet does not exist.
3402//
3403//   * ErrCodeInvalidSubnetException "InvalidSubnet"
3404//   The specified subnet is out of available addresses.
3405//
3406//   * ErrCodeAllocationIdNotFoundException "AllocationIdNotFound"
3407//   The specified allocation ID does not exist.
3408//
3409//   * ErrCodeAvailabilityZoneNotSupportedException "AvailabilityZoneNotSupported"
3410//   The specified Availability Zone is not supported.
3411//
3412// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancingv2-2015-12-01/SetSubnets
3413func (c *ELBV2) SetSubnets(input *SetSubnetsInput) (*SetSubnetsOutput, error) {
3414	req, out := c.SetSubnetsRequest(input)
3415	return out, req.Send()
3416}
3417
3418// SetSubnetsWithContext is the same as SetSubnets with the addition of
3419// the ability to pass a context and additional request options.
3420//
3421// See SetSubnets for details on how to use this API operation.
3422//
3423// The context must be non-nil and will be used for request cancellation. If
3424// the context is nil a panic will occur. In the future the SDK may create
3425// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3426// for more information on using Contexts.
3427func (c *ELBV2) SetSubnetsWithContext(ctx aws.Context, input *SetSubnetsInput, opts ...request.Option) (*SetSubnetsOutput, error) {
3428	req, out := c.SetSubnetsRequest(input)
3429	req.SetContext(ctx)
3430	req.ApplyOptions(opts...)
3431	return out, req.Send()
3432}
3433
3434// Information about an action.
3435//
3436// Each rule must include exactly one of the following types of actions: forward,
3437// fixed-response, or redirect, and it must be the last action to be performed.
3438type Action struct {
3439	_ struct{} `type:"structure"`
3440
3441	// [HTTPS listeners] Information for using Amazon Cognito to authenticate users.
3442	// Specify only when Type is authenticate-cognito.
3443	AuthenticateCognitoConfig *AuthenticateCognitoActionConfig `type:"structure"`
3444
3445	// [HTTPS listeners] Information about an identity provider that is compliant
3446	// with OpenID Connect (OIDC). Specify only when Type is authenticate-oidc.
3447	AuthenticateOidcConfig *AuthenticateOidcActionConfig `type:"structure"`
3448
3449	// [Application Load Balancer] Information for creating an action that returns
3450	// a custom HTTP response. Specify only when Type is fixed-response.
3451	FixedResponseConfig *FixedResponseActionConfig `type:"structure"`
3452
3453	// Information for creating an action that distributes requests among one or
3454	// more target groups. For Network Load Balancers, you can specify a single
3455	// target group. Specify only when Type is forward. If you specify both ForwardConfig
3456	// and TargetGroupArn, you can specify only one target group using ForwardConfig
3457	// and it must be the same target group specified in TargetGroupArn.
3458	ForwardConfig *ForwardActionConfig `type:"structure"`
3459
3460	// The order for the action. This value is required for rules with multiple
3461	// actions. The action with the lowest value for order is performed first.
3462	Order *int64 `min:"1" type:"integer"`
3463
3464	// [Application Load Balancer] Information for creating a redirect action. Specify
3465	// only when Type is redirect.
3466	RedirectConfig *RedirectActionConfig `type:"structure"`
3467
3468	// The Amazon Resource Name (ARN) of the target group. Specify only when Type
3469	// is forward and you want to route to a single target group. To route to one
3470	// or more target groups, use ForwardConfig instead.
3471	TargetGroupArn *string `type:"string"`
3472
3473	// The type of action.
3474	//
3475	// Type is a required field
3476	Type *string `type:"string" required:"true" enum:"ActionTypeEnum"`
3477}
3478
3479// String returns the string representation.
3480//
3481// API parameter values that are decorated as "sensitive" in the API will not
3482// be included in the string output. The member name will be present, but the
3483// value will be replaced with "sensitive".
3484func (s Action) String() string {
3485	return awsutil.Prettify(s)
3486}
3487
3488// GoString returns the string representation.
3489//
3490// API parameter values that are decorated as "sensitive" in the API will not
3491// be included in the string output. The member name will be present, but the
3492// value will be replaced with "sensitive".
3493func (s Action) GoString() string {
3494	return s.String()
3495}
3496
3497// Validate inspects the fields of the type to determine if they are valid.
3498func (s *Action) Validate() error {
3499	invalidParams := request.ErrInvalidParams{Context: "Action"}
3500	if s.Order != nil && *s.Order < 1 {
3501		invalidParams.Add(request.NewErrParamMinValue("Order", 1))
3502	}
3503	if s.Type == nil {
3504		invalidParams.Add(request.NewErrParamRequired("Type"))
3505	}
3506	if s.AuthenticateCognitoConfig != nil {
3507		if err := s.AuthenticateCognitoConfig.Validate(); err != nil {
3508			invalidParams.AddNested("AuthenticateCognitoConfig", err.(request.ErrInvalidParams))
3509		}
3510	}
3511	if s.AuthenticateOidcConfig != nil {
3512		if err := s.AuthenticateOidcConfig.Validate(); err != nil {
3513			invalidParams.AddNested("AuthenticateOidcConfig", err.(request.ErrInvalidParams))
3514		}
3515	}
3516	if s.FixedResponseConfig != nil {
3517		if err := s.FixedResponseConfig.Validate(); err != nil {
3518			invalidParams.AddNested("FixedResponseConfig", err.(request.ErrInvalidParams))
3519		}
3520	}
3521	if s.RedirectConfig != nil {
3522		if err := s.RedirectConfig.Validate(); err != nil {
3523			invalidParams.AddNested("RedirectConfig", err.(request.ErrInvalidParams))
3524		}
3525	}
3526
3527	if invalidParams.Len() > 0 {
3528		return invalidParams
3529	}
3530	return nil
3531}
3532
3533// SetAuthenticateCognitoConfig sets the AuthenticateCognitoConfig field's value.
3534func (s *Action) SetAuthenticateCognitoConfig(v *AuthenticateCognitoActionConfig) *Action {
3535	s.AuthenticateCognitoConfig = v
3536	return s
3537}
3538
3539// SetAuthenticateOidcConfig sets the AuthenticateOidcConfig field's value.
3540func (s *Action) SetAuthenticateOidcConfig(v *AuthenticateOidcActionConfig) *Action {
3541	s.AuthenticateOidcConfig = v
3542	return s
3543}
3544
3545// SetFixedResponseConfig sets the FixedResponseConfig field's value.
3546func (s *Action) SetFixedResponseConfig(v *FixedResponseActionConfig) *Action {
3547	s.FixedResponseConfig = v
3548	return s
3549}
3550
3551// SetForwardConfig sets the ForwardConfig field's value.
3552func (s *Action) SetForwardConfig(v *ForwardActionConfig) *Action {
3553	s.ForwardConfig = v
3554	return s
3555}
3556
3557// SetOrder sets the Order field's value.
3558func (s *Action) SetOrder(v int64) *Action {
3559	s.Order = &v
3560	return s
3561}
3562
3563// SetRedirectConfig sets the RedirectConfig field's value.
3564func (s *Action) SetRedirectConfig(v *RedirectActionConfig) *Action {
3565	s.RedirectConfig = v
3566	return s
3567}
3568
3569// SetTargetGroupArn sets the TargetGroupArn field's value.
3570func (s *Action) SetTargetGroupArn(v string) *Action {
3571	s.TargetGroupArn = &v
3572	return s
3573}
3574
3575// SetType sets the Type field's value.
3576func (s *Action) SetType(v string) *Action {
3577	s.Type = &v
3578	return s
3579}
3580
3581type AddListenerCertificatesInput struct {
3582	_ struct{} `type:"structure"`
3583
3584	// The certificate to add. You can specify one certificate per call. Set CertificateArn
3585	// to the certificate ARN but do not set IsDefault.
3586	//
3587	// Certificates is a required field
3588	Certificates []*Certificate `type:"list" required:"true"`
3589
3590	// The Amazon Resource Name (ARN) of the listener.
3591	//
3592	// ListenerArn is a required field
3593	ListenerArn *string `type:"string" required:"true"`
3594}
3595
3596// String returns the string representation.
3597//
3598// API parameter values that are decorated as "sensitive" in the API will not
3599// be included in the string output. The member name will be present, but the
3600// value will be replaced with "sensitive".
3601func (s AddListenerCertificatesInput) String() string {
3602	return awsutil.Prettify(s)
3603}
3604
3605// GoString returns the string representation.
3606//
3607// API parameter values that are decorated as "sensitive" in the API will not
3608// be included in the string output. The member name will be present, but the
3609// value will be replaced with "sensitive".
3610func (s AddListenerCertificatesInput) GoString() string {
3611	return s.String()
3612}
3613
3614// Validate inspects the fields of the type to determine if they are valid.
3615func (s *AddListenerCertificatesInput) Validate() error {
3616	invalidParams := request.ErrInvalidParams{Context: "AddListenerCertificatesInput"}
3617	if s.Certificates == nil {
3618		invalidParams.Add(request.NewErrParamRequired("Certificates"))
3619	}
3620	if s.ListenerArn == nil {
3621		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
3622	}
3623
3624	if invalidParams.Len() > 0 {
3625		return invalidParams
3626	}
3627	return nil
3628}
3629
3630// SetCertificates sets the Certificates field's value.
3631func (s *AddListenerCertificatesInput) SetCertificates(v []*Certificate) *AddListenerCertificatesInput {
3632	s.Certificates = v
3633	return s
3634}
3635
3636// SetListenerArn sets the ListenerArn field's value.
3637func (s *AddListenerCertificatesInput) SetListenerArn(v string) *AddListenerCertificatesInput {
3638	s.ListenerArn = &v
3639	return s
3640}
3641
3642type AddListenerCertificatesOutput struct {
3643	_ struct{} `type:"structure"`
3644
3645	// Information about the certificates in the certificate list.
3646	Certificates []*Certificate `type:"list"`
3647}
3648
3649// String returns the string representation.
3650//
3651// API parameter values that are decorated as "sensitive" in the API will not
3652// be included in the string output. The member name will be present, but the
3653// value will be replaced with "sensitive".
3654func (s AddListenerCertificatesOutput) String() string {
3655	return awsutil.Prettify(s)
3656}
3657
3658// GoString returns the string representation.
3659//
3660// API parameter values that are decorated as "sensitive" in the API will not
3661// be included in the string output. The member name will be present, but the
3662// value will be replaced with "sensitive".
3663func (s AddListenerCertificatesOutput) GoString() string {
3664	return s.String()
3665}
3666
3667// SetCertificates sets the Certificates field's value.
3668func (s *AddListenerCertificatesOutput) SetCertificates(v []*Certificate) *AddListenerCertificatesOutput {
3669	s.Certificates = v
3670	return s
3671}
3672
3673type AddTagsInput struct {
3674	_ struct{} `type:"structure"`
3675
3676	// The Amazon Resource Name (ARN) of the resource.
3677	//
3678	// ResourceArns is a required field
3679	ResourceArns []*string `type:"list" required:"true"`
3680
3681	// The tags.
3682	//
3683	// Tags is a required field
3684	Tags []*Tag `min:"1" type:"list" required:"true"`
3685}
3686
3687// String returns the string representation.
3688//
3689// API parameter values that are decorated as "sensitive" in the API will not
3690// be included in the string output. The member name will be present, but the
3691// value will be replaced with "sensitive".
3692func (s AddTagsInput) String() string {
3693	return awsutil.Prettify(s)
3694}
3695
3696// GoString returns the string representation.
3697//
3698// API parameter values that are decorated as "sensitive" in the API will not
3699// be included in the string output. The member name will be present, but the
3700// value will be replaced with "sensitive".
3701func (s AddTagsInput) GoString() string {
3702	return s.String()
3703}
3704
3705// Validate inspects the fields of the type to determine if they are valid.
3706func (s *AddTagsInput) Validate() error {
3707	invalidParams := request.ErrInvalidParams{Context: "AddTagsInput"}
3708	if s.ResourceArns == nil {
3709		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
3710	}
3711	if s.Tags == nil {
3712		invalidParams.Add(request.NewErrParamRequired("Tags"))
3713	}
3714	if s.Tags != nil && len(s.Tags) < 1 {
3715		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
3716	}
3717	if s.Tags != nil {
3718		for i, v := range s.Tags {
3719			if v == nil {
3720				continue
3721			}
3722			if err := v.Validate(); err != nil {
3723				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3724			}
3725		}
3726	}
3727
3728	if invalidParams.Len() > 0 {
3729		return invalidParams
3730	}
3731	return nil
3732}
3733
3734// SetResourceArns sets the ResourceArns field's value.
3735func (s *AddTagsInput) SetResourceArns(v []*string) *AddTagsInput {
3736	s.ResourceArns = v
3737	return s
3738}
3739
3740// SetTags sets the Tags field's value.
3741func (s *AddTagsInput) SetTags(v []*Tag) *AddTagsInput {
3742	s.Tags = v
3743	return s
3744}
3745
3746type AddTagsOutput struct {
3747	_ struct{} `type:"structure"`
3748}
3749
3750// String returns the string representation.
3751//
3752// API parameter values that are decorated as "sensitive" in the API will not
3753// be included in the string output. The member name will be present, but the
3754// value will be replaced with "sensitive".
3755func (s AddTagsOutput) String() string {
3756	return awsutil.Prettify(s)
3757}
3758
3759// GoString returns the string representation.
3760//
3761// API parameter values that are decorated as "sensitive" in the API will not
3762// be included in the string output. The member name will be present, but the
3763// value will be replaced with "sensitive".
3764func (s AddTagsOutput) GoString() string {
3765	return s.String()
3766}
3767
3768// Request parameters to use when integrating with Amazon Cognito to authenticate
3769// users.
3770type AuthenticateCognitoActionConfig struct {
3771	_ struct{} `type:"structure"`
3772
3773	// The query parameters (up to 10) to include in the redirect request to the
3774	// authorization endpoint.
3775	AuthenticationRequestExtraParams map[string]*string `type:"map"`
3776
3777	// The behavior if the user is not authenticated. The following are possible
3778	// values:
3779	//
3780	//    * deny - Return an HTTP 401 Unauthorized error.
3781	//
3782	//    * allow - Allow the request to be forwarded to the target.
3783	//
3784	//    * authenticate - Redirect the request to the IdP authorization endpoint.
3785	//    This is the default value.
3786	OnUnauthenticatedRequest *string `type:"string" enum:"AuthenticateCognitoActionConditionalBehaviorEnum"`
3787
3788	// The set of user claims to be requested from the IdP. The default is openid.
3789	//
3790	// To verify which scope values your IdP supports and how to separate multiple
3791	// values, see the documentation for your IdP.
3792	Scope *string `type:"string"`
3793
3794	// The name of the cookie used to maintain session information. The default
3795	// is AWSELBAuthSessionCookie.
3796	SessionCookieName *string `type:"string"`
3797
3798	// The maximum duration of the authentication session, in seconds. The default
3799	// is 604800 seconds (7 days).
3800	SessionTimeout *int64 `type:"long"`
3801
3802	// The Amazon Resource Name (ARN) of the Amazon Cognito user pool.
3803	//
3804	// UserPoolArn is a required field
3805	UserPoolArn *string `type:"string" required:"true"`
3806
3807	// The ID of the Amazon Cognito user pool client.
3808	//
3809	// UserPoolClientId is a required field
3810	UserPoolClientId *string `type:"string" required:"true"`
3811
3812	// The domain prefix or fully-qualified domain name of the Amazon Cognito user
3813	// pool.
3814	//
3815	// UserPoolDomain is a required field
3816	UserPoolDomain *string `type:"string" required:"true"`
3817}
3818
3819// String returns the string representation.
3820//
3821// API parameter values that are decorated as "sensitive" in the API will not
3822// be included in the string output. The member name will be present, but the
3823// value will be replaced with "sensitive".
3824func (s AuthenticateCognitoActionConfig) String() string {
3825	return awsutil.Prettify(s)
3826}
3827
3828// GoString returns the string representation.
3829//
3830// API parameter values that are decorated as "sensitive" in the API will not
3831// be included in the string output. The member name will be present, but the
3832// value will be replaced with "sensitive".
3833func (s AuthenticateCognitoActionConfig) GoString() string {
3834	return s.String()
3835}
3836
3837// Validate inspects the fields of the type to determine if they are valid.
3838func (s *AuthenticateCognitoActionConfig) Validate() error {
3839	invalidParams := request.ErrInvalidParams{Context: "AuthenticateCognitoActionConfig"}
3840	if s.UserPoolArn == nil {
3841		invalidParams.Add(request.NewErrParamRequired("UserPoolArn"))
3842	}
3843	if s.UserPoolClientId == nil {
3844		invalidParams.Add(request.NewErrParamRequired("UserPoolClientId"))
3845	}
3846	if s.UserPoolDomain == nil {
3847		invalidParams.Add(request.NewErrParamRequired("UserPoolDomain"))
3848	}
3849
3850	if invalidParams.Len() > 0 {
3851		return invalidParams
3852	}
3853	return nil
3854}
3855
3856// SetAuthenticationRequestExtraParams sets the AuthenticationRequestExtraParams field's value.
3857func (s *AuthenticateCognitoActionConfig) SetAuthenticationRequestExtraParams(v map[string]*string) *AuthenticateCognitoActionConfig {
3858	s.AuthenticationRequestExtraParams = v
3859	return s
3860}
3861
3862// SetOnUnauthenticatedRequest sets the OnUnauthenticatedRequest field's value.
3863func (s *AuthenticateCognitoActionConfig) SetOnUnauthenticatedRequest(v string) *AuthenticateCognitoActionConfig {
3864	s.OnUnauthenticatedRequest = &v
3865	return s
3866}
3867
3868// SetScope sets the Scope field's value.
3869func (s *AuthenticateCognitoActionConfig) SetScope(v string) *AuthenticateCognitoActionConfig {
3870	s.Scope = &v
3871	return s
3872}
3873
3874// SetSessionCookieName sets the SessionCookieName field's value.
3875func (s *AuthenticateCognitoActionConfig) SetSessionCookieName(v string) *AuthenticateCognitoActionConfig {
3876	s.SessionCookieName = &v
3877	return s
3878}
3879
3880// SetSessionTimeout sets the SessionTimeout field's value.
3881func (s *AuthenticateCognitoActionConfig) SetSessionTimeout(v int64) *AuthenticateCognitoActionConfig {
3882	s.SessionTimeout = &v
3883	return s
3884}
3885
3886// SetUserPoolArn sets the UserPoolArn field's value.
3887func (s *AuthenticateCognitoActionConfig) SetUserPoolArn(v string) *AuthenticateCognitoActionConfig {
3888	s.UserPoolArn = &v
3889	return s
3890}
3891
3892// SetUserPoolClientId sets the UserPoolClientId field's value.
3893func (s *AuthenticateCognitoActionConfig) SetUserPoolClientId(v string) *AuthenticateCognitoActionConfig {
3894	s.UserPoolClientId = &v
3895	return s
3896}
3897
3898// SetUserPoolDomain sets the UserPoolDomain field's value.
3899func (s *AuthenticateCognitoActionConfig) SetUserPoolDomain(v string) *AuthenticateCognitoActionConfig {
3900	s.UserPoolDomain = &v
3901	return s
3902}
3903
3904// Request parameters when using an identity provider (IdP) that is compliant
3905// with OpenID Connect (OIDC) to authenticate users.
3906type AuthenticateOidcActionConfig struct {
3907	_ struct{} `type:"structure"`
3908
3909	// The query parameters (up to 10) to include in the redirect request to the
3910	// authorization endpoint.
3911	AuthenticationRequestExtraParams map[string]*string `type:"map"`
3912
3913	// The authorization endpoint of the IdP. This must be a full URL, including
3914	// the HTTPS protocol, the domain, and the path.
3915	//
3916	// AuthorizationEndpoint is a required field
3917	AuthorizationEndpoint *string `type:"string" required:"true"`
3918
3919	// The OAuth 2.0 client identifier.
3920	//
3921	// ClientId is a required field
3922	ClientId *string `type:"string" required:"true"`
3923
3924	// The OAuth 2.0 client secret. This parameter is required if you are creating
3925	// a rule. If you are modifying a rule, you can omit this parameter if you set
3926	// UseExistingClientSecret to true.
3927	ClientSecret *string `type:"string"`
3928
3929	// The OIDC issuer identifier of the IdP. This must be a full URL, including
3930	// the HTTPS protocol, the domain, and the path.
3931	//
3932	// Issuer is a required field
3933	Issuer *string `type:"string" required:"true"`
3934
3935	// The behavior if the user is not authenticated. The following are possible
3936	// values:
3937	//
3938	//    * deny - Return an HTTP 401 Unauthorized error.
3939	//
3940	//    * allow - Allow the request to be forwarded to the target.
3941	//
3942	//    * authenticate - Redirect the request to the IdP authorization endpoint.
3943	//    This is the default value.
3944	OnUnauthenticatedRequest *string `type:"string" enum:"AuthenticateOidcActionConditionalBehaviorEnum"`
3945
3946	// The set of user claims to be requested from the IdP. The default is openid.
3947	//
3948	// To verify which scope values your IdP supports and how to separate multiple
3949	// values, see the documentation for your IdP.
3950	Scope *string `type:"string"`
3951
3952	// The name of the cookie used to maintain session information. The default
3953	// is AWSELBAuthSessionCookie.
3954	SessionCookieName *string `type:"string"`
3955
3956	// The maximum duration of the authentication session, in seconds. The default
3957	// is 604800 seconds (7 days).
3958	SessionTimeout *int64 `type:"long"`
3959
3960	// The token endpoint of the IdP. This must be a full URL, including the HTTPS
3961	// protocol, the domain, and the path.
3962	//
3963	// TokenEndpoint is a required field
3964	TokenEndpoint *string `type:"string" required:"true"`
3965
3966	// Indicates whether to use the existing client secret when modifying a rule.
3967	// If you are creating a rule, you can omit this parameter or set it to false.
3968	UseExistingClientSecret *bool `type:"boolean"`
3969
3970	// The user info endpoint of the IdP. This must be a full URL, including the
3971	// HTTPS protocol, the domain, and the path.
3972	//
3973	// UserInfoEndpoint is a required field
3974	UserInfoEndpoint *string `type:"string" required:"true"`
3975}
3976
3977// String returns the string representation.
3978//
3979// API parameter values that are decorated as "sensitive" in the API will not
3980// be included in the string output. The member name will be present, but the
3981// value will be replaced with "sensitive".
3982func (s AuthenticateOidcActionConfig) String() string {
3983	return awsutil.Prettify(s)
3984}
3985
3986// GoString returns the string representation.
3987//
3988// API parameter values that are decorated as "sensitive" in the API will not
3989// be included in the string output. The member name will be present, but the
3990// value will be replaced with "sensitive".
3991func (s AuthenticateOidcActionConfig) GoString() string {
3992	return s.String()
3993}
3994
3995// Validate inspects the fields of the type to determine if they are valid.
3996func (s *AuthenticateOidcActionConfig) Validate() error {
3997	invalidParams := request.ErrInvalidParams{Context: "AuthenticateOidcActionConfig"}
3998	if s.AuthorizationEndpoint == nil {
3999		invalidParams.Add(request.NewErrParamRequired("AuthorizationEndpoint"))
4000	}
4001	if s.ClientId == nil {
4002		invalidParams.Add(request.NewErrParamRequired("ClientId"))
4003	}
4004	if s.Issuer == nil {
4005		invalidParams.Add(request.NewErrParamRequired("Issuer"))
4006	}
4007	if s.TokenEndpoint == nil {
4008		invalidParams.Add(request.NewErrParamRequired("TokenEndpoint"))
4009	}
4010	if s.UserInfoEndpoint == nil {
4011		invalidParams.Add(request.NewErrParamRequired("UserInfoEndpoint"))
4012	}
4013
4014	if invalidParams.Len() > 0 {
4015		return invalidParams
4016	}
4017	return nil
4018}
4019
4020// SetAuthenticationRequestExtraParams sets the AuthenticationRequestExtraParams field's value.
4021func (s *AuthenticateOidcActionConfig) SetAuthenticationRequestExtraParams(v map[string]*string) *AuthenticateOidcActionConfig {
4022	s.AuthenticationRequestExtraParams = v
4023	return s
4024}
4025
4026// SetAuthorizationEndpoint sets the AuthorizationEndpoint field's value.
4027func (s *AuthenticateOidcActionConfig) SetAuthorizationEndpoint(v string) *AuthenticateOidcActionConfig {
4028	s.AuthorizationEndpoint = &v
4029	return s
4030}
4031
4032// SetClientId sets the ClientId field's value.
4033func (s *AuthenticateOidcActionConfig) SetClientId(v string) *AuthenticateOidcActionConfig {
4034	s.ClientId = &v
4035	return s
4036}
4037
4038// SetClientSecret sets the ClientSecret field's value.
4039func (s *AuthenticateOidcActionConfig) SetClientSecret(v string) *AuthenticateOidcActionConfig {
4040	s.ClientSecret = &v
4041	return s
4042}
4043
4044// SetIssuer sets the Issuer field's value.
4045func (s *AuthenticateOidcActionConfig) SetIssuer(v string) *AuthenticateOidcActionConfig {
4046	s.Issuer = &v
4047	return s
4048}
4049
4050// SetOnUnauthenticatedRequest sets the OnUnauthenticatedRequest field's value.
4051func (s *AuthenticateOidcActionConfig) SetOnUnauthenticatedRequest(v string) *AuthenticateOidcActionConfig {
4052	s.OnUnauthenticatedRequest = &v
4053	return s
4054}
4055
4056// SetScope sets the Scope field's value.
4057func (s *AuthenticateOidcActionConfig) SetScope(v string) *AuthenticateOidcActionConfig {
4058	s.Scope = &v
4059	return s
4060}
4061
4062// SetSessionCookieName sets the SessionCookieName field's value.
4063func (s *AuthenticateOidcActionConfig) SetSessionCookieName(v string) *AuthenticateOidcActionConfig {
4064	s.SessionCookieName = &v
4065	return s
4066}
4067
4068// SetSessionTimeout sets the SessionTimeout field's value.
4069func (s *AuthenticateOidcActionConfig) SetSessionTimeout(v int64) *AuthenticateOidcActionConfig {
4070	s.SessionTimeout = &v
4071	return s
4072}
4073
4074// SetTokenEndpoint sets the TokenEndpoint field's value.
4075func (s *AuthenticateOidcActionConfig) SetTokenEndpoint(v string) *AuthenticateOidcActionConfig {
4076	s.TokenEndpoint = &v
4077	return s
4078}
4079
4080// SetUseExistingClientSecret sets the UseExistingClientSecret field's value.
4081func (s *AuthenticateOidcActionConfig) SetUseExistingClientSecret(v bool) *AuthenticateOidcActionConfig {
4082	s.UseExistingClientSecret = &v
4083	return s
4084}
4085
4086// SetUserInfoEndpoint sets the UserInfoEndpoint field's value.
4087func (s *AuthenticateOidcActionConfig) SetUserInfoEndpoint(v string) *AuthenticateOidcActionConfig {
4088	s.UserInfoEndpoint = &v
4089	return s
4090}
4091
4092// Information about an Availability Zone.
4093type AvailabilityZone struct {
4094	_ struct{} `type:"structure"`
4095
4096	// [Network Load Balancers] If you need static IP addresses for your load balancer,
4097	// you can specify one Elastic IP address per Availability Zone when you create
4098	// an internal-facing load balancer. For internal load balancers, you can specify
4099	// a private IP address from the IPv4 range of the subnet.
4100	LoadBalancerAddresses []*LoadBalancerAddress `type:"list"`
4101
4102	// [Application Load Balancers on Outposts] The ID of the Outpost.
4103	OutpostId *string `type:"string"`
4104
4105	// The ID of the subnet. You can specify one subnet per Availability Zone.
4106	SubnetId *string `type:"string"`
4107
4108	// The name of the Availability Zone.
4109	ZoneName *string `type:"string"`
4110}
4111
4112// String returns the string representation.
4113//
4114// API parameter values that are decorated as "sensitive" in the API will not
4115// be included in the string output. The member name will be present, but the
4116// value will be replaced with "sensitive".
4117func (s AvailabilityZone) String() string {
4118	return awsutil.Prettify(s)
4119}
4120
4121// GoString returns the string representation.
4122//
4123// API parameter values that are decorated as "sensitive" in the API will not
4124// be included in the string output. The member name will be present, but the
4125// value will be replaced with "sensitive".
4126func (s AvailabilityZone) GoString() string {
4127	return s.String()
4128}
4129
4130// SetLoadBalancerAddresses sets the LoadBalancerAddresses field's value.
4131func (s *AvailabilityZone) SetLoadBalancerAddresses(v []*LoadBalancerAddress) *AvailabilityZone {
4132	s.LoadBalancerAddresses = v
4133	return s
4134}
4135
4136// SetOutpostId sets the OutpostId field's value.
4137func (s *AvailabilityZone) SetOutpostId(v string) *AvailabilityZone {
4138	s.OutpostId = &v
4139	return s
4140}
4141
4142// SetSubnetId sets the SubnetId field's value.
4143func (s *AvailabilityZone) SetSubnetId(v string) *AvailabilityZone {
4144	s.SubnetId = &v
4145	return s
4146}
4147
4148// SetZoneName sets the ZoneName field's value.
4149func (s *AvailabilityZone) SetZoneName(v string) *AvailabilityZone {
4150	s.ZoneName = &v
4151	return s
4152}
4153
4154// Information about an SSL server certificate.
4155type Certificate struct {
4156	_ struct{} `type:"structure"`
4157
4158	// The Amazon Resource Name (ARN) of the certificate.
4159	CertificateArn *string `type:"string"`
4160
4161	// Indicates whether the certificate is the default certificate. Do not set
4162	// this value when specifying a certificate as an input. This value is not included
4163	// in the output when describing a listener, but is included when describing
4164	// listener certificates.
4165	IsDefault *bool `type:"boolean"`
4166}
4167
4168// String returns the string representation.
4169//
4170// API parameter values that are decorated as "sensitive" in the API will not
4171// be included in the string output. The member name will be present, but the
4172// value will be replaced with "sensitive".
4173func (s Certificate) String() string {
4174	return awsutil.Prettify(s)
4175}
4176
4177// GoString returns the string representation.
4178//
4179// API parameter values that are decorated as "sensitive" in the API will not
4180// be included in the string output. The member name will be present, but the
4181// value will be replaced with "sensitive".
4182func (s Certificate) GoString() string {
4183	return s.String()
4184}
4185
4186// SetCertificateArn sets the CertificateArn field's value.
4187func (s *Certificate) SetCertificateArn(v string) *Certificate {
4188	s.CertificateArn = &v
4189	return s
4190}
4191
4192// SetIsDefault sets the IsDefault field's value.
4193func (s *Certificate) SetIsDefault(v bool) *Certificate {
4194	s.IsDefault = &v
4195	return s
4196}
4197
4198// Information about a cipher used in a policy.
4199type Cipher struct {
4200	_ struct{} `type:"structure"`
4201
4202	// The name of the cipher.
4203	Name *string `type:"string"`
4204
4205	// The priority of the cipher.
4206	Priority *int64 `type:"integer"`
4207}
4208
4209// String returns the string representation.
4210//
4211// API parameter values that are decorated as "sensitive" in the API will not
4212// be included in the string output. The member name will be present, but the
4213// value will be replaced with "sensitive".
4214func (s Cipher) String() string {
4215	return awsutil.Prettify(s)
4216}
4217
4218// GoString returns the string representation.
4219//
4220// API parameter values that are decorated as "sensitive" in the API will not
4221// be included in the string output. The member name will be present, but the
4222// value will be replaced with "sensitive".
4223func (s Cipher) GoString() string {
4224	return s.String()
4225}
4226
4227// SetName sets the Name field's value.
4228func (s *Cipher) SetName(v string) *Cipher {
4229	s.Name = &v
4230	return s
4231}
4232
4233// SetPriority sets the Priority field's value.
4234func (s *Cipher) SetPriority(v int64) *Cipher {
4235	s.Priority = &v
4236	return s
4237}
4238
4239type CreateListenerInput struct {
4240	_ struct{} `type:"structure"`
4241
4242	// [TLS listeners] The name of the Application-Layer Protocol Negotiation (ALPN)
4243	// policy. You can specify one policy name. The following are the possible values:
4244	//
4245	//    * HTTP1Only
4246	//
4247	//    * HTTP2Only
4248	//
4249	//    * HTTP2Optional
4250	//
4251	//    * HTTP2Preferred
4252	//
4253	//    * None
4254	//
4255	// For more information, see ALPN policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#alpn-policies)
4256	// in the Network Load Balancers Guide.
4257	AlpnPolicy []*string `type:"list"`
4258
4259	// [HTTPS and TLS listeners] The default certificate for the listener. You must
4260	// provide exactly one certificate. Set CertificateArn to the certificate ARN
4261	// but do not set IsDefault.
4262	Certificates []*Certificate `type:"list"`
4263
4264	// The actions for the default rule.
4265	//
4266	// DefaultActions is a required field
4267	DefaultActions []*Action `type:"list" required:"true"`
4268
4269	// The Amazon Resource Name (ARN) of the load balancer.
4270	//
4271	// LoadBalancerArn is a required field
4272	LoadBalancerArn *string `type:"string" required:"true"`
4273
4274	// The port on which the load balancer is listening. You cannot specify a port
4275	// for a Gateway Load Balancer.
4276	Port *int64 `min:"1" type:"integer"`
4277
4278	// The protocol for connections from clients to the load balancer. For Application
4279	// Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load
4280	// Balancers, the supported protocols are TCP, TLS, UDP, and TCP_UDP. You can’t
4281	// specify the UDP or TCP_UDP protocol if dual-stack mode is enabled. You cannot
4282	// specify a protocol for a Gateway Load Balancer.
4283	Protocol *string `type:"string" enum:"ProtocolEnum"`
4284
4285	// [HTTPS and TLS listeners] The security policy that defines which protocols
4286	// and ciphers are supported.
4287	//
4288	// For more information, see Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)
4289	// in the Application Load Balancers Guide and Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies)
4290	// in the Network Load Balancers Guide.
4291	SslPolicy *string `type:"string"`
4292
4293	// The tags to assign to the listener.
4294	Tags []*Tag `min:"1" type:"list"`
4295}
4296
4297// String returns the string representation.
4298//
4299// API parameter values that are decorated as "sensitive" in the API will not
4300// be included in the string output. The member name will be present, but the
4301// value will be replaced with "sensitive".
4302func (s CreateListenerInput) String() string {
4303	return awsutil.Prettify(s)
4304}
4305
4306// GoString returns the string representation.
4307//
4308// API parameter values that are decorated as "sensitive" in the API will not
4309// be included in the string output. The member name will be present, but the
4310// value will be replaced with "sensitive".
4311func (s CreateListenerInput) GoString() string {
4312	return s.String()
4313}
4314
4315// Validate inspects the fields of the type to determine if they are valid.
4316func (s *CreateListenerInput) Validate() error {
4317	invalidParams := request.ErrInvalidParams{Context: "CreateListenerInput"}
4318	if s.DefaultActions == nil {
4319		invalidParams.Add(request.NewErrParamRequired("DefaultActions"))
4320	}
4321	if s.LoadBalancerArn == nil {
4322		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
4323	}
4324	if s.Port != nil && *s.Port < 1 {
4325		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
4326	}
4327	if s.Tags != nil && len(s.Tags) < 1 {
4328		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
4329	}
4330	if s.DefaultActions != nil {
4331		for i, v := range s.DefaultActions {
4332			if v == nil {
4333				continue
4334			}
4335			if err := v.Validate(); err != nil {
4336				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultActions", i), err.(request.ErrInvalidParams))
4337			}
4338		}
4339	}
4340	if s.Tags != nil {
4341		for i, v := range s.Tags {
4342			if v == nil {
4343				continue
4344			}
4345			if err := v.Validate(); err != nil {
4346				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
4347			}
4348		}
4349	}
4350
4351	if invalidParams.Len() > 0 {
4352		return invalidParams
4353	}
4354	return nil
4355}
4356
4357// SetAlpnPolicy sets the AlpnPolicy field's value.
4358func (s *CreateListenerInput) SetAlpnPolicy(v []*string) *CreateListenerInput {
4359	s.AlpnPolicy = v
4360	return s
4361}
4362
4363// SetCertificates sets the Certificates field's value.
4364func (s *CreateListenerInput) SetCertificates(v []*Certificate) *CreateListenerInput {
4365	s.Certificates = v
4366	return s
4367}
4368
4369// SetDefaultActions sets the DefaultActions field's value.
4370func (s *CreateListenerInput) SetDefaultActions(v []*Action) *CreateListenerInput {
4371	s.DefaultActions = v
4372	return s
4373}
4374
4375// SetLoadBalancerArn sets the LoadBalancerArn field's value.
4376func (s *CreateListenerInput) SetLoadBalancerArn(v string) *CreateListenerInput {
4377	s.LoadBalancerArn = &v
4378	return s
4379}
4380
4381// SetPort sets the Port field's value.
4382func (s *CreateListenerInput) SetPort(v int64) *CreateListenerInput {
4383	s.Port = &v
4384	return s
4385}
4386
4387// SetProtocol sets the Protocol field's value.
4388func (s *CreateListenerInput) SetProtocol(v string) *CreateListenerInput {
4389	s.Protocol = &v
4390	return s
4391}
4392
4393// SetSslPolicy sets the SslPolicy field's value.
4394func (s *CreateListenerInput) SetSslPolicy(v string) *CreateListenerInput {
4395	s.SslPolicy = &v
4396	return s
4397}
4398
4399// SetTags sets the Tags field's value.
4400func (s *CreateListenerInput) SetTags(v []*Tag) *CreateListenerInput {
4401	s.Tags = v
4402	return s
4403}
4404
4405type CreateListenerOutput struct {
4406	_ struct{} `type:"structure"`
4407
4408	// Information about the listener.
4409	Listeners []*Listener `type:"list"`
4410}
4411
4412// String returns the string representation.
4413//
4414// API parameter values that are decorated as "sensitive" in the API will not
4415// be included in the string output. The member name will be present, but the
4416// value will be replaced with "sensitive".
4417func (s CreateListenerOutput) String() string {
4418	return awsutil.Prettify(s)
4419}
4420
4421// GoString returns the string representation.
4422//
4423// API parameter values that are decorated as "sensitive" in the API will not
4424// be included in the string output. The member name will be present, but the
4425// value will be replaced with "sensitive".
4426func (s CreateListenerOutput) GoString() string {
4427	return s.String()
4428}
4429
4430// SetListeners sets the Listeners field's value.
4431func (s *CreateListenerOutput) SetListeners(v []*Listener) *CreateListenerOutput {
4432	s.Listeners = v
4433	return s
4434}
4435
4436type CreateLoadBalancerInput struct {
4437	_ struct{} `type:"structure"`
4438
4439	// [Application Load Balancers on Outposts] The ID of the customer-owned address
4440	// pool (CoIP pool).
4441	CustomerOwnedIpv4Pool *string `type:"string"`
4442
4443	// The type of IP addresses used by the subnets for your load balancer. The
4444	// possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and
4445	// IPv6 addresses). Internal load balancers must use ipv4.
4446	IpAddressType *string `type:"string" enum:"IpAddressType"`
4447
4448	// The name of the load balancer.
4449	//
4450	// This name must be unique per region per account, can have a maximum of 32
4451	// characters, must contain only alphanumeric characters or hyphens, must not
4452	// begin or end with a hyphen, and must not begin with "internal-".
4453	//
4454	// Name is a required field
4455	Name *string `type:"string" required:"true"`
4456
4457	// The nodes of an Internet-facing load balancer have public IP addresses. The
4458	// DNS name of an Internet-facing load balancer is publicly resolvable to the
4459	// public IP addresses of the nodes. Therefore, Internet-facing load balancers
4460	// can route requests from clients over the internet.
4461	//
4462	// The nodes of an internal load balancer have only private IP addresses. The
4463	// DNS name of an internal load balancer is publicly resolvable to the private
4464	// IP addresses of the nodes. Therefore, internal load balancers can route requests
4465	// only from clients with access to the VPC for the load balancer.
4466	//
4467	// The default is an Internet-facing load balancer.
4468	//
4469	// You cannot specify a scheme for a Gateway Load Balancer.
4470	Scheme *string `type:"string" enum:"LoadBalancerSchemeEnum"`
4471
4472	// [Application Load Balancers] The IDs of the security groups for the load
4473	// balancer.
4474	SecurityGroups []*string `type:"list"`
4475
4476	// The IDs of the public subnets. You can specify only one subnet per Availability
4477	// Zone. You must specify either subnets or subnet mappings.
4478	//
4479	// [Application Load Balancers] You must specify subnets from at least two Availability
4480	// Zones. You cannot specify Elastic IP addresses for your subnets.
4481	//
4482	// [Application Load Balancers on Outposts] You must specify one Outpost subnet.
4483	//
4484	// [Application Load Balancers on Local Zones] You can specify subnets from
4485	// one or more Local Zones.
4486	//
4487	// [Network Load Balancers] You can specify subnets from one or more Availability
4488	// Zones. You can specify one Elastic IP address per subnet if you need static
4489	// IP addresses for your internet-facing load balancer. For internal load balancers,
4490	// you can specify one private IP address per subnet from the IPv4 range of
4491	// the subnet. For internet-facing load balancer, you can specify one IPv6 address
4492	// per subnet.
4493	//
4494	// [Gateway Load Balancers] You can specify subnets from one or more Availability
4495	// Zones. You cannot specify Elastic IP addresses for your subnets.
4496	SubnetMappings []*SubnetMapping `type:"list"`
4497
4498	// The IDs of the public subnets. You can specify only one subnet per Availability
4499	// Zone. You must specify either subnets or subnet mappings.
4500	//
4501	// [Application Load Balancers] You must specify subnets from at least two Availability
4502	// Zones.
4503	//
4504	// [Application Load Balancers on Outposts] You must specify one Outpost subnet.
4505	//
4506	// [Application Load Balancers on Local Zones] You can specify subnets from
4507	// one or more Local Zones.
4508	//
4509	// [Network Load Balancers] You can specify subnets from one or more Availability
4510	// Zones.
4511	//
4512	// [Gateway Load Balancers] You can specify subnets from one or more Availability
4513	// Zones.
4514	Subnets []*string `type:"list"`
4515
4516	// The tags to assign to the load balancer.
4517	Tags []*Tag `min:"1" type:"list"`
4518
4519	// The type of load balancer. The default is application.
4520	Type *string `type:"string" enum:"LoadBalancerTypeEnum"`
4521}
4522
4523// String returns the string representation.
4524//
4525// API parameter values that are decorated as "sensitive" in the API will not
4526// be included in the string output. The member name will be present, but the
4527// value will be replaced with "sensitive".
4528func (s CreateLoadBalancerInput) String() string {
4529	return awsutil.Prettify(s)
4530}
4531
4532// GoString returns the string representation.
4533//
4534// API parameter values that are decorated as "sensitive" in the API will not
4535// be included in the string output. The member name will be present, but the
4536// value will be replaced with "sensitive".
4537func (s CreateLoadBalancerInput) GoString() string {
4538	return s.String()
4539}
4540
4541// Validate inspects the fields of the type to determine if they are valid.
4542func (s *CreateLoadBalancerInput) Validate() error {
4543	invalidParams := request.ErrInvalidParams{Context: "CreateLoadBalancerInput"}
4544	if s.Name == nil {
4545		invalidParams.Add(request.NewErrParamRequired("Name"))
4546	}
4547	if s.Tags != nil && len(s.Tags) < 1 {
4548		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
4549	}
4550	if s.Tags != nil {
4551		for i, v := range s.Tags {
4552			if v == nil {
4553				continue
4554			}
4555			if err := v.Validate(); err != nil {
4556				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
4557			}
4558		}
4559	}
4560
4561	if invalidParams.Len() > 0 {
4562		return invalidParams
4563	}
4564	return nil
4565}
4566
4567// SetCustomerOwnedIpv4Pool sets the CustomerOwnedIpv4Pool field's value.
4568func (s *CreateLoadBalancerInput) SetCustomerOwnedIpv4Pool(v string) *CreateLoadBalancerInput {
4569	s.CustomerOwnedIpv4Pool = &v
4570	return s
4571}
4572
4573// SetIpAddressType sets the IpAddressType field's value.
4574func (s *CreateLoadBalancerInput) SetIpAddressType(v string) *CreateLoadBalancerInput {
4575	s.IpAddressType = &v
4576	return s
4577}
4578
4579// SetName sets the Name field's value.
4580func (s *CreateLoadBalancerInput) SetName(v string) *CreateLoadBalancerInput {
4581	s.Name = &v
4582	return s
4583}
4584
4585// SetScheme sets the Scheme field's value.
4586func (s *CreateLoadBalancerInput) SetScheme(v string) *CreateLoadBalancerInput {
4587	s.Scheme = &v
4588	return s
4589}
4590
4591// SetSecurityGroups sets the SecurityGroups field's value.
4592func (s *CreateLoadBalancerInput) SetSecurityGroups(v []*string) *CreateLoadBalancerInput {
4593	s.SecurityGroups = v
4594	return s
4595}
4596
4597// SetSubnetMappings sets the SubnetMappings field's value.
4598func (s *CreateLoadBalancerInput) SetSubnetMappings(v []*SubnetMapping) *CreateLoadBalancerInput {
4599	s.SubnetMappings = v
4600	return s
4601}
4602
4603// SetSubnets sets the Subnets field's value.
4604func (s *CreateLoadBalancerInput) SetSubnets(v []*string) *CreateLoadBalancerInput {
4605	s.Subnets = v
4606	return s
4607}
4608
4609// SetTags sets the Tags field's value.
4610func (s *CreateLoadBalancerInput) SetTags(v []*Tag) *CreateLoadBalancerInput {
4611	s.Tags = v
4612	return s
4613}
4614
4615// SetType sets the Type field's value.
4616func (s *CreateLoadBalancerInput) SetType(v string) *CreateLoadBalancerInput {
4617	s.Type = &v
4618	return s
4619}
4620
4621type CreateLoadBalancerOutput struct {
4622	_ struct{} `type:"structure"`
4623
4624	// Information about the load balancer.
4625	LoadBalancers []*LoadBalancer `type:"list"`
4626}
4627
4628// String returns the string representation.
4629//
4630// API parameter values that are decorated as "sensitive" in the API will not
4631// be included in the string output. The member name will be present, but the
4632// value will be replaced with "sensitive".
4633func (s CreateLoadBalancerOutput) String() string {
4634	return awsutil.Prettify(s)
4635}
4636
4637// GoString returns the string representation.
4638//
4639// API parameter values that are decorated as "sensitive" in the API will not
4640// be included in the string output. The member name will be present, but the
4641// value will be replaced with "sensitive".
4642func (s CreateLoadBalancerOutput) GoString() string {
4643	return s.String()
4644}
4645
4646// SetLoadBalancers sets the LoadBalancers field's value.
4647func (s *CreateLoadBalancerOutput) SetLoadBalancers(v []*LoadBalancer) *CreateLoadBalancerOutput {
4648	s.LoadBalancers = v
4649	return s
4650}
4651
4652type CreateRuleInput struct {
4653	_ struct{} `type:"structure"`
4654
4655	// The actions.
4656	//
4657	// Actions is a required field
4658	Actions []*Action `type:"list" required:"true"`
4659
4660	// The conditions.
4661	//
4662	// Conditions is a required field
4663	Conditions []*RuleCondition `type:"list" required:"true"`
4664
4665	// The Amazon Resource Name (ARN) of the listener.
4666	//
4667	// ListenerArn is a required field
4668	ListenerArn *string `type:"string" required:"true"`
4669
4670	// The rule priority. A listener can't have multiple rules with the same priority.
4671	//
4672	// Priority is a required field
4673	Priority *int64 `min:"1" type:"integer" required:"true"`
4674
4675	// The tags to assign to the rule.
4676	Tags []*Tag `min:"1" type:"list"`
4677}
4678
4679// String returns the string representation.
4680//
4681// API parameter values that are decorated as "sensitive" in the API will not
4682// be included in the string output. The member name will be present, but the
4683// value will be replaced with "sensitive".
4684func (s CreateRuleInput) String() string {
4685	return awsutil.Prettify(s)
4686}
4687
4688// GoString returns the string representation.
4689//
4690// API parameter values that are decorated as "sensitive" in the API will not
4691// be included in the string output. The member name will be present, but the
4692// value will be replaced with "sensitive".
4693func (s CreateRuleInput) GoString() string {
4694	return s.String()
4695}
4696
4697// Validate inspects the fields of the type to determine if they are valid.
4698func (s *CreateRuleInput) Validate() error {
4699	invalidParams := request.ErrInvalidParams{Context: "CreateRuleInput"}
4700	if s.Actions == nil {
4701		invalidParams.Add(request.NewErrParamRequired("Actions"))
4702	}
4703	if s.Conditions == nil {
4704		invalidParams.Add(request.NewErrParamRequired("Conditions"))
4705	}
4706	if s.ListenerArn == nil {
4707		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
4708	}
4709	if s.Priority == nil {
4710		invalidParams.Add(request.NewErrParamRequired("Priority"))
4711	}
4712	if s.Priority != nil && *s.Priority < 1 {
4713		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
4714	}
4715	if s.Tags != nil && len(s.Tags) < 1 {
4716		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
4717	}
4718	if s.Actions != nil {
4719		for i, v := range s.Actions {
4720			if v == nil {
4721				continue
4722			}
4723			if err := v.Validate(); err != nil {
4724				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
4725			}
4726		}
4727	}
4728	if s.Tags != nil {
4729		for i, v := range s.Tags {
4730			if v == nil {
4731				continue
4732			}
4733			if err := v.Validate(); err != nil {
4734				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
4735			}
4736		}
4737	}
4738
4739	if invalidParams.Len() > 0 {
4740		return invalidParams
4741	}
4742	return nil
4743}
4744
4745// SetActions sets the Actions field's value.
4746func (s *CreateRuleInput) SetActions(v []*Action) *CreateRuleInput {
4747	s.Actions = v
4748	return s
4749}
4750
4751// SetConditions sets the Conditions field's value.
4752func (s *CreateRuleInput) SetConditions(v []*RuleCondition) *CreateRuleInput {
4753	s.Conditions = v
4754	return s
4755}
4756
4757// SetListenerArn sets the ListenerArn field's value.
4758func (s *CreateRuleInput) SetListenerArn(v string) *CreateRuleInput {
4759	s.ListenerArn = &v
4760	return s
4761}
4762
4763// SetPriority sets the Priority field's value.
4764func (s *CreateRuleInput) SetPriority(v int64) *CreateRuleInput {
4765	s.Priority = &v
4766	return s
4767}
4768
4769// SetTags sets the Tags field's value.
4770func (s *CreateRuleInput) SetTags(v []*Tag) *CreateRuleInput {
4771	s.Tags = v
4772	return s
4773}
4774
4775type CreateRuleOutput struct {
4776	_ struct{} `type:"structure"`
4777
4778	// Information about the rule.
4779	Rules []*Rule `type:"list"`
4780}
4781
4782// String returns the string representation.
4783//
4784// API parameter values that are decorated as "sensitive" in the API will not
4785// be included in the string output. The member name will be present, but the
4786// value will be replaced with "sensitive".
4787func (s CreateRuleOutput) String() string {
4788	return awsutil.Prettify(s)
4789}
4790
4791// GoString returns the string representation.
4792//
4793// API parameter values that are decorated as "sensitive" in the API will not
4794// be included in the string output. The member name will be present, but the
4795// value will be replaced with "sensitive".
4796func (s CreateRuleOutput) GoString() string {
4797	return s.String()
4798}
4799
4800// SetRules sets the Rules field's value.
4801func (s *CreateRuleOutput) SetRules(v []*Rule) *CreateRuleOutput {
4802	s.Rules = v
4803	return s
4804}
4805
4806type CreateTargetGroupInput struct {
4807	_ struct{} `type:"structure"`
4808
4809	// Indicates whether health checks are enabled. If the target type is lambda,
4810	// health checks are disabled by default but can be enabled. If the target type
4811	// is instance, ip, or alb, health checks are always enabled and cannot be disabled.
4812	HealthCheckEnabled *bool `type:"boolean"`
4813
4814	// The approximate amount of time, in seconds, between health checks of an individual
4815	// target. If the target group protocol is TCP, TLS, UDP, or TCP_UDP, the supported
4816	// values are 10 and 30 seconds. If the target group protocol is HTTP or HTTPS,
4817	// the default is 30 seconds. If the target group protocol is GENEVE, the default
4818	// is 10 seconds. If the target type is lambda, the default is 35 seconds.
4819	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
4820
4821	// [HTTP/HTTPS health checks] The destination for health checks on the targets.
4822	//
4823	// [HTTP1 or HTTP2 protocol version] The ping path. The default is /.
4824	//
4825	// [GRPC protocol version] The path of a custom health check method with the
4826	// format /package.service/method. The default is /Amazon Web Services.ALB/healthcheck.
4827	HealthCheckPath *string `min:"1" type:"string"`
4828
4829	// The port the load balancer uses when performing health checks on targets.
4830	// If the protocol is HTTP, HTTPS, TCP, TLS, UDP, or TCP_UDP, the default is
4831	// traffic-port, which is the port on which each target receives traffic from
4832	// the load balancer. If the protocol is GENEVE, the default is port 80.
4833	HealthCheckPort *string `type:"string"`
4834
4835	// The protocol the load balancer uses when performing health checks on targets.
4836	// For Application Load Balancers, the default is HTTP. For Network Load Balancers
4837	// and Gateway Load Balancers, the default is TCP. The TCP protocol is not supported
4838	// for health checks if the protocol of the target group is HTTP or HTTPS. The
4839	// GENEVE, TLS, UDP, and TCP_UDP protocols are not supported for health checks.
4840	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
4841
4842	// The amount of time, in seconds, during which no response from a target means
4843	// a failed health check. For target groups with a protocol of HTTP, HTTPS,
4844	// or GENEVE, the default is 5 seconds. For target groups with a protocol of
4845	// TCP or TLS, this value must be 6 seconds for HTTP health checks and 10 seconds
4846	// for TCP and HTTPS health checks. If the target type is lambda, the default
4847	// is 30 seconds.
4848	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
4849
4850	// The number of consecutive health checks successes required before considering
4851	// an unhealthy target healthy. For target groups with a protocol of HTTP or
4852	// HTTPS, the default is 5. For target groups with a protocol of TCP, TLS, or
4853	// GENEVE, the default is 3. If the target type is lambda, the default is 5.
4854	HealthyThresholdCount *int64 `min:"2" type:"integer"`
4855
4856	// The type of IP address used for this target group. The possible values are
4857	// ipv4 and ipv6. This is an optional parameter. If not specified, the IP address
4858	// type defaults to ipv4.
4859	IpAddressType *string `type:"string" enum:"TargetGroupIpAddressTypeEnum"`
4860
4861	// [HTTP/HTTPS health checks] The HTTP or gRPC codes to use when checking for
4862	// a successful response from a target.
4863	Matcher *Matcher `type:"structure"`
4864
4865	// The name of the target group.
4866	//
4867	// This name must be unique per region per account, can have a maximum of 32
4868	// characters, must contain only alphanumeric characters or hyphens, and must
4869	// not begin or end with a hyphen.
4870	//
4871	// Name is a required field
4872	Name *string `type:"string" required:"true"`
4873
4874	// The port on which the targets receive traffic. This port is used unless you
4875	// specify a port override when registering the target. If the target is a Lambda
4876	// function, this parameter does not apply. If the protocol is GENEVE, the supported
4877	// port is 6081.
4878	Port *int64 `min:"1" type:"integer"`
4879
4880	// The protocol to use for routing traffic to the targets. For Application Load
4881	// Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers,
4882	// the supported protocols are TCP, TLS, UDP, or TCP_UDP. For Gateway Load Balancers,
4883	// the supported protocol is GENEVE. A TCP_UDP listener must be associated with
4884	// a TCP_UDP target group. If the target is a Lambda function, this parameter
4885	// does not apply.
4886	Protocol *string `type:"string" enum:"ProtocolEnum"`
4887
4888	// [HTTP/HTTPS protocol] The protocol version. Specify GRPC to send requests
4889	// to targets using gRPC. Specify HTTP2 to send requests to targets using HTTP/2.
4890	// The default is HTTP1, which sends requests to targets using HTTP/1.1.
4891	ProtocolVersion *string `type:"string"`
4892
4893	// The tags to assign to the target group.
4894	Tags []*Tag `min:"1" type:"list"`
4895
4896	// The type of target that you must specify when registering targets with this
4897	// target group. You can't specify targets for a target group using more than
4898	// one target type.
4899	//
4900	//    * instance - Register targets by instance ID. This is the default value.
4901	//
4902	//    * ip - Register targets by IP address. You can specify IP addresses from
4903	//    the subnets of the virtual private cloud (VPC) for the target group, the
4904	//    RFC 1918 range (10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16), and the
4905	//    RFC 6598 range (100.64.0.0/10). You can't specify publicly routable IP
4906	//    addresses.
4907	//
4908	//    * lambda - Register a single Lambda function as a target.
4909	//
4910	//    * alb - Register a single Application Load Balancer as a target.
4911	TargetType *string `type:"string" enum:"TargetTypeEnum"`
4912
4913	// The number of consecutive health check failures required before considering
4914	// a target unhealthy. If the target group protocol is HTTP or HTTPS, the default
4915	// is 2. If the target group protocol is TCP or TLS, this value must be the
4916	// same as the healthy threshold count. If the target group protocol is GENEVE,
4917	// the default is 3. If the target type is lambda, the default is 2.
4918	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
4919
4920	// The identifier of the virtual private cloud (VPC). If the target is a Lambda
4921	// function, this parameter does not apply. Otherwise, this parameter is required.
4922	VpcId *string `type:"string"`
4923}
4924
4925// String returns the string representation.
4926//
4927// API parameter values that are decorated as "sensitive" in the API will not
4928// be included in the string output. The member name will be present, but the
4929// value will be replaced with "sensitive".
4930func (s CreateTargetGroupInput) String() string {
4931	return awsutil.Prettify(s)
4932}
4933
4934// GoString returns the string representation.
4935//
4936// API parameter values that are decorated as "sensitive" in the API will not
4937// be included in the string output. The member name will be present, but the
4938// value will be replaced with "sensitive".
4939func (s CreateTargetGroupInput) GoString() string {
4940	return s.String()
4941}
4942
4943// Validate inspects the fields of the type to determine if they are valid.
4944func (s *CreateTargetGroupInput) Validate() error {
4945	invalidParams := request.ErrInvalidParams{Context: "CreateTargetGroupInput"}
4946	if s.HealthCheckIntervalSeconds != nil && *s.HealthCheckIntervalSeconds < 5 {
4947		invalidParams.Add(request.NewErrParamMinValue("HealthCheckIntervalSeconds", 5))
4948	}
4949	if s.HealthCheckPath != nil && len(*s.HealthCheckPath) < 1 {
4950		invalidParams.Add(request.NewErrParamMinLen("HealthCheckPath", 1))
4951	}
4952	if s.HealthCheckTimeoutSeconds != nil && *s.HealthCheckTimeoutSeconds < 2 {
4953		invalidParams.Add(request.NewErrParamMinValue("HealthCheckTimeoutSeconds", 2))
4954	}
4955	if s.HealthyThresholdCount != nil && *s.HealthyThresholdCount < 2 {
4956		invalidParams.Add(request.NewErrParamMinValue("HealthyThresholdCount", 2))
4957	}
4958	if s.Name == nil {
4959		invalidParams.Add(request.NewErrParamRequired("Name"))
4960	}
4961	if s.Port != nil && *s.Port < 1 {
4962		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
4963	}
4964	if s.Tags != nil && len(s.Tags) < 1 {
4965		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
4966	}
4967	if s.UnhealthyThresholdCount != nil && *s.UnhealthyThresholdCount < 2 {
4968		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThresholdCount", 2))
4969	}
4970	if s.Tags != nil {
4971		for i, v := range s.Tags {
4972			if v == nil {
4973				continue
4974			}
4975			if err := v.Validate(); err != nil {
4976				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
4977			}
4978		}
4979	}
4980
4981	if invalidParams.Len() > 0 {
4982		return invalidParams
4983	}
4984	return nil
4985}
4986
4987// SetHealthCheckEnabled sets the HealthCheckEnabled field's value.
4988func (s *CreateTargetGroupInput) SetHealthCheckEnabled(v bool) *CreateTargetGroupInput {
4989	s.HealthCheckEnabled = &v
4990	return s
4991}
4992
4993// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
4994func (s *CreateTargetGroupInput) SetHealthCheckIntervalSeconds(v int64) *CreateTargetGroupInput {
4995	s.HealthCheckIntervalSeconds = &v
4996	return s
4997}
4998
4999// SetHealthCheckPath sets the HealthCheckPath field's value.
5000func (s *CreateTargetGroupInput) SetHealthCheckPath(v string) *CreateTargetGroupInput {
5001	s.HealthCheckPath = &v
5002	return s
5003}
5004
5005// SetHealthCheckPort sets the HealthCheckPort field's value.
5006func (s *CreateTargetGroupInput) SetHealthCheckPort(v string) *CreateTargetGroupInput {
5007	s.HealthCheckPort = &v
5008	return s
5009}
5010
5011// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
5012func (s *CreateTargetGroupInput) SetHealthCheckProtocol(v string) *CreateTargetGroupInput {
5013	s.HealthCheckProtocol = &v
5014	return s
5015}
5016
5017// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
5018func (s *CreateTargetGroupInput) SetHealthCheckTimeoutSeconds(v int64) *CreateTargetGroupInput {
5019	s.HealthCheckTimeoutSeconds = &v
5020	return s
5021}
5022
5023// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
5024func (s *CreateTargetGroupInput) SetHealthyThresholdCount(v int64) *CreateTargetGroupInput {
5025	s.HealthyThresholdCount = &v
5026	return s
5027}
5028
5029// SetIpAddressType sets the IpAddressType field's value.
5030func (s *CreateTargetGroupInput) SetIpAddressType(v string) *CreateTargetGroupInput {
5031	s.IpAddressType = &v
5032	return s
5033}
5034
5035// SetMatcher sets the Matcher field's value.
5036func (s *CreateTargetGroupInput) SetMatcher(v *Matcher) *CreateTargetGroupInput {
5037	s.Matcher = v
5038	return s
5039}
5040
5041// SetName sets the Name field's value.
5042func (s *CreateTargetGroupInput) SetName(v string) *CreateTargetGroupInput {
5043	s.Name = &v
5044	return s
5045}
5046
5047// SetPort sets the Port field's value.
5048func (s *CreateTargetGroupInput) SetPort(v int64) *CreateTargetGroupInput {
5049	s.Port = &v
5050	return s
5051}
5052
5053// SetProtocol sets the Protocol field's value.
5054func (s *CreateTargetGroupInput) SetProtocol(v string) *CreateTargetGroupInput {
5055	s.Protocol = &v
5056	return s
5057}
5058
5059// SetProtocolVersion sets the ProtocolVersion field's value.
5060func (s *CreateTargetGroupInput) SetProtocolVersion(v string) *CreateTargetGroupInput {
5061	s.ProtocolVersion = &v
5062	return s
5063}
5064
5065// SetTags sets the Tags field's value.
5066func (s *CreateTargetGroupInput) SetTags(v []*Tag) *CreateTargetGroupInput {
5067	s.Tags = v
5068	return s
5069}
5070
5071// SetTargetType sets the TargetType field's value.
5072func (s *CreateTargetGroupInput) SetTargetType(v string) *CreateTargetGroupInput {
5073	s.TargetType = &v
5074	return s
5075}
5076
5077// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
5078func (s *CreateTargetGroupInput) SetUnhealthyThresholdCount(v int64) *CreateTargetGroupInput {
5079	s.UnhealthyThresholdCount = &v
5080	return s
5081}
5082
5083// SetVpcId sets the VpcId field's value.
5084func (s *CreateTargetGroupInput) SetVpcId(v string) *CreateTargetGroupInput {
5085	s.VpcId = &v
5086	return s
5087}
5088
5089type CreateTargetGroupOutput struct {
5090	_ struct{} `type:"structure"`
5091
5092	// Information about the target group.
5093	TargetGroups []*TargetGroup `type:"list"`
5094}
5095
5096// String returns the string representation.
5097//
5098// API parameter values that are decorated as "sensitive" in the API will not
5099// be included in the string output. The member name will be present, but the
5100// value will be replaced with "sensitive".
5101func (s CreateTargetGroupOutput) String() string {
5102	return awsutil.Prettify(s)
5103}
5104
5105// GoString returns the string representation.
5106//
5107// API parameter values that are decorated as "sensitive" in the API will not
5108// be included in the string output. The member name will be present, but the
5109// value will be replaced with "sensitive".
5110func (s CreateTargetGroupOutput) GoString() string {
5111	return s.String()
5112}
5113
5114// SetTargetGroups sets the TargetGroups field's value.
5115func (s *CreateTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *CreateTargetGroupOutput {
5116	s.TargetGroups = v
5117	return s
5118}
5119
5120type DeleteListenerInput struct {
5121	_ struct{} `type:"structure"`
5122
5123	// The Amazon Resource Name (ARN) of the listener.
5124	//
5125	// ListenerArn is a required field
5126	ListenerArn *string `type:"string" required:"true"`
5127}
5128
5129// String returns the string representation.
5130//
5131// API parameter values that are decorated as "sensitive" in the API will not
5132// be included in the string output. The member name will be present, but the
5133// value will be replaced with "sensitive".
5134func (s DeleteListenerInput) String() string {
5135	return awsutil.Prettify(s)
5136}
5137
5138// GoString returns the string representation.
5139//
5140// API parameter values that are decorated as "sensitive" in the API will not
5141// be included in the string output. The member name will be present, but the
5142// value will be replaced with "sensitive".
5143func (s DeleteListenerInput) GoString() string {
5144	return s.String()
5145}
5146
5147// Validate inspects the fields of the type to determine if they are valid.
5148func (s *DeleteListenerInput) Validate() error {
5149	invalidParams := request.ErrInvalidParams{Context: "DeleteListenerInput"}
5150	if s.ListenerArn == nil {
5151		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
5152	}
5153
5154	if invalidParams.Len() > 0 {
5155		return invalidParams
5156	}
5157	return nil
5158}
5159
5160// SetListenerArn sets the ListenerArn field's value.
5161func (s *DeleteListenerInput) SetListenerArn(v string) *DeleteListenerInput {
5162	s.ListenerArn = &v
5163	return s
5164}
5165
5166type DeleteListenerOutput struct {
5167	_ struct{} `type:"structure"`
5168}
5169
5170// String returns the string representation.
5171//
5172// API parameter values that are decorated as "sensitive" in the API will not
5173// be included in the string output. The member name will be present, but the
5174// value will be replaced with "sensitive".
5175func (s DeleteListenerOutput) String() string {
5176	return awsutil.Prettify(s)
5177}
5178
5179// GoString returns the string representation.
5180//
5181// API parameter values that are decorated as "sensitive" in the API will not
5182// be included in the string output. The member name will be present, but the
5183// value will be replaced with "sensitive".
5184func (s DeleteListenerOutput) GoString() string {
5185	return s.String()
5186}
5187
5188type DeleteLoadBalancerInput struct {
5189	_ struct{} `type:"structure"`
5190
5191	// The Amazon Resource Name (ARN) of the load balancer.
5192	//
5193	// LoadBalancerArn is a required field
5194	LoadBalancerArn *string `type:"string" required:"true"`
5195}
5196
5197// String returns the string representation.
5198//
5199// API parameter values that are decorated as "sensitive" in the API will not
5200// be included in the string output. The member name will be present, but the
5201// value will be replaced with "sensitive".
5202func (s DeleteLoadBalancerInput) String() string {
5203	return awsutil.Prettify(s)
5204}
5205
5206// GoString returns the string representation.
5207//
5208// API parameter values that are decorated as "sensitive" in the API will not
5209// be included in the string output. The member name will be present, but the
5210// value will be replaced with "sensitive".
5211func (s DeleteLoadBalancerInput) GoString() string {
5212	return s.String()
5213}
5214
5215// Validate inspects the fields of the type to determine if they are valid.
5216func (s *DeleteLoadBalancerInput) Validate() error {
5217	invalidParams := request.ErrInvalidParams{Context: "DeleteLoadBalancerInput"}
5218	if s.LoadBalancerArn == nil {
5219		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
5220	}
5221
5222	if invalidParams.Len() > 0 {
5223		return invalidParams
5224	}
5225	return nil
5226}
5227
5228// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5229func (s *DeleteLoadBalancerInput) SetLoadBalancerArn(v string) *DeleteLoadBalancerInput {
5230	s.LoadBalancerArn = &v
5231	return s
5232}
5233
5234type DeleteLoadBalancerOutput struct {
5235	_ struct{} `type:"structure"`
5236}
5237
5238// String returns the string representation.
5239//
5240// API parameter values that are decorated as "sensitive" in the API will not
5241// be included in the string output. The member name will be present, but the
5242// value will be replaced with "sensitive".
5243func (s DeleteLoadBalancerOutput) String() string {
5244	return awsutil.Prettify(s)
5245}
5246
5247// GoString returns the string representation.
5248//
5249// API parameter values that are decorated as "sensitive" in the API will not
5250// be included in the string output. The member name will be present, but the
5251// value will be replaced with "sensitive".
5252func (s DeleteLoadBalancerOutput) GoString() string {
5253	return s.String()
5254}
5255
5256type DeleteRuleInput struct {
5257	_ struct{} `type:"structure"`
5258
5259	// The Amazon Resource Name (ARN) of the rule.
5260	//
5261	// RuleArn is a required field
5262	RuleArn *string `type:"string" required:"true"`
5263}
5264
5265// String returns the string representation.
5266//
5267// API parameter values that are decorated as "sensitive" in the API will not
5268// be included in the string output. The member name will be present, but the
5269// value will be replaced with "sensitive".
5270func (s DeleteRuleInput) String() string {
5271	return awsutil.Prettify(s)
5272}
5273
5274// GoString returns the string representation.
5275//
5276// API parameter values that are decorated as "sensitive" in the API will not
5277// be included in the string output. The member name will be present, but the
5278// value will be replaced with "sensitive".
5279func (s DeleteRuleInput) GoString() string {
5280	return s.String()
5281}
5282
5283// Validate inspects the fields of the type to determine if they are valid.
5284func (s *DeleteRuleInput) Validate() error {
5285	invalidParams := request.ErrInvalidParams{Context: "DeleteRuleInput"}
5286	if s.RuleArn == nil {
5287		invalidParams.Add(request.NewErrParamRequired("RuleArn"))
5288	}
5289
5290	if invalidParams.Len() > 0 {
5291		return invalidParams
5292	}
5293	return nil
5294}
5295
5296// SetRuleArn sets the RuleArn field's value.
5297func (s *DeleteRuleInput) SetRuleArn(v string) *DeleteRuleInput {
5298	s.RuleArn = &v
5299	return s
5300}
5301
5302type DeleteRuleOutput struct {
5303	_ struct{} `type:"structure"`
5304}
5305
5306// String returns the string representation.
5307//
5308// API parameter values that are decorated as "sensitive" in the API will not
5309// be included in the string output. The member name will be present, but the
5310// value will be replaced with "sensitive".
5311func (s DeleteRuleOutput) String() string {
5312	return awsutil.Prettify(s)
5313}
5314
5315// GoString returns the string representation.
5316//
5317// API parameter values that are decorated as "sensitive" in the API will not
5318// be included in the string output. The member name will be present, but the
5319// value will be replaced with "sensitive".
5320func (s DeleteRuleOutput) GoString() string {
5321	return s.String()
5322}
5323
5324type DeleteTargetGroupInput struct {
5325	_ struct{} `type:"structure"`
5326
5327	// The Amazon Resource Name (ARN) of the target group.
5328	//
5329	// TargetGroupArn is a required field
5330	TargetGroupArn *string `type:"string" required:"true"`
5331}
5332
5333// String returns the string representation.
5334//
5335// API parameter values that are decorated as "sensitive" in the API will not
5336// be included in the string output. The member name will be present, but the
5337// value will be replaced with "sensitive".
5338func (s DeleteTargetGroupInput) String() string {
5339	return awsutil.Prettify(s)
5340}
5341
5342// GoString returns the string representation.
5343//
5344// API parameter values that are decorated as "sensitive" in the API will not
5345// be included in the string output. The member name will be present, but the
5346// value will be replaced with "sensitive".
5347func (s DeleteTargetGroupInput) GoString() string {
5348	return s.String()
5349}
5350
5351// Validate inspects the fields of the type to determine if they are valid.
5352func (s *DeleteTargetGroupInput) Validate() error {
5353	invalidParams := request.ErrInvalidParams{Context: "DeleteTargetGroupInput"}
5354	if s.TargetGroupArn == nil {
5355		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
5356	}
5357
5358	if invalidParams.Len() > 0 {
5359		return invalidParams
5360	}
5361	return nil
5362}
5363
5364// SetTargetGroupArn sets the TargetGroupArn field's value.
5365func (s *DeleteTargetGroupInput) SetTargetGroupArn(v string) *DeleteTargetGroupInput {
5366	s.TargetGroupArn = &v
5367	return s
5368}
5369
5370type DeleteTargetGroupOutput struct {
5371	_ struct{} `type:"structure"`
5372}
5373
5374// String returns the string representation.
5375//
5376// API parameter values that are decorated as "sensitive" in the API will not
5377// be included in the string output. The member name will be present, but the
5378// value will be replaced with "sensitive".
5379func (s DeleteTargetGroupOutput) String() string {
5380	return awsutil.Prettify(s)
5381}
5382
5383// GoString returns the string representation.
5384//
5385// API parameter values that are decorated as "sensitive" in the API will not
5386// be included in the string output. The member name will be present, but the
5387// value will be replaced with "sensitive".
5388func (s DeleteTargetGroupOutput) GoString() string {
5389	return s.String()
5390}
5391
5392type DeregisterTargetsInput struct {
5393	_ struct{} `type:"structure"`
5394
5395	// The Amazon Resource Name (ARN) of the target group.
5396	//
5397	// TargetGroupArn is a required field
5398	TargetGroupArn *string `type:"string" required:"true"`
5399
5400	// The targets. If you specified a port override when you registered a target,
5401	// you must specify both the target ID and the port when you deregister it.
5402	//
5403	// Targets is a required field
5404	Targets []*TargetDescription `type:"list" required:"true"`
5405}
5406
5407// String returns the string representation.
5408//
5409// API parameter values that are decorated as "sensitive" in the API will not
5410// be included in the string output. The member name will be present, but the
5411// value will be replaced with "sensitive".
5412func (s DeregisterTargetsInput) String() string {
5413	return awsutil.Prettify(s)
5414}
5415
5416// GoString returns the string representation.
5417//
5418// API parameter values that are decorated as "sensitive" in the API will not
5419// be included in the string output. The member name will be present, but the
5420// value will be replaced with "sensitive".
5421func (s DeregisterTargetsInput) GoString() string {
5422	return s.String()
5423}
5424
5425// Validate inspects the fields of the type to determine if they are valid.
5426func (s *DeregisterTargetsInput) Validate() error {
5427	invalidParams := request.ErrInvalidParams{Context: "DeregisterTargetsInput"}
5428	if s.TargetGroupArn == nil {
5429		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
5430	}
5431	if s.Targets == nil {
5432		invalidParams.Add(request.NewErrParamRequired("Targets"))
5433	}
5434	if s.Targets != nil {
5435		for i, v := range s.Targets {
5436			if v == nil {
5437				continue
5438			}
5439			if err := v.Validate(); err != nil {
5440				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
5441			}
5442		}
5443	}
5444
5445	if invalidParams.Len() > 0 {
5446		return invalidParams
5447	}
5448	return nil
5449}
5450
5451// SetTargetGroupArn sets the TargetGroupArn field's value.
5452func (s *DeregisterTargetsInput) SetTargetGroupArn(v string) *DeregisterTargetsInput {
5453	s.TargetGroupArn = &v
5454	return s
5455}
5456
5457// SetTargets sets the Targets field's value.
5458func (s *DeregisterTargetsInput) SetTargets(v []*TargetDescription) *DeregisterTargetsInput {
5459	s.Targets = v
5460	return s
5461}
5462
5463type DeregisterTargetsOutput struct {
5464	_ struct{} `type:"structure"`
5465}
5466
5467// String returns the string representation.
5468//
5469// API parameter values that are decorated as "sensitive" in the API will not
5470// be included in the string output. The member name will be present, but the
5471// value will be replaced with "sensitive".
5472func (s DeregisterTargetsOutput) String() string {
5473	return awsutil.Prettify(s)
5474}
5475
5476// GoString returns the string representation.
5477//
5478// API parameter values that are decorated as "sensitive" in the API will not
5479// be included in the string output. The member name will be present, but the
5480// value will be replaced with "sensitive".
5481func (s DeregisterTargetsOutput) GoString() string {
5482	return s.String()
5483}
5484
5485type DescribeAccountLimitsInput struct {
5486	_ struct{} `type:"structure"`
5487
5488	// The marker for the next set of results. (You received this marker from a
5489	// previous call.)
5490	Marker *string `type:"string"`
5491
5492	// The maximum number of results to return with this call.
5493	PageSize *int64 `min:"1" type:"integer"`
5494}
5495
5496// String returns the string representation.
5497//
5498// API parameter values that are decorated as "sensitive" in the API will not
5499// be included in the string output. The member name will be present, but the
5500// value will be replaced with "sensitive".
5501func (s DescribeAccountLimitsInput) String() string {
5502	return awsutil.Prettify(s)
5503}
5504
5505// GoString returns the string representation.
5506//
5507// API parameter values that are decorated as "sensitive" in the API will not
5508// be included in the string output. The member name will be present, but the
5509// value will be replaced with "sensitive".
5510func (s DescribeAccountLimitsInput) GoString() string {
5511	return s.String()
5512}
5513
5514// Validate inspects the fields of the type to determine if they are valid.
5515func (s *DescribeAccountLimitsInput) Validate() error {
5516	invalidParams := request.ErrInvalidParams{Context: "DescribeAccountLimitsInput"}
5517	if s.PageSize != nil && *s.PageSize < 1 {
5518		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
5519	}
5520
5521	if invalidParams.Len() > 0 {
5522		return invalidParams
5523	}
5524	return nil
5525}
5526
5527// SetMarker sets the Marker field's value.
5528func (s *DescribeAccountLimitsInput) SetMarker(v string) *DescribeAccountLimitsInput {
5529	s.Marker = &v
5530	return s
5531}
5532
5533// SetPageSize sets the PageSize field's value.
5534func (s *DescribeAccountLimitsInput) SetPageSize(v int64) *DescribeAccountLimitsInput {
5535	s.PageSize = &v
5536	return s
5537}
5538
5539type DescribeAccountLimitsOutput struct {
5540	_ struct{} `type:"structure"`
5541
5542	// Information about the limits.
5543	Limits []*Limit `type:"list"`
5544
5545	// If there are additional results, this is the marker for the next set of results.
5546	// Otherwise, this is null.
5547	NextMarker *string `type:"string"`
5548}
5549
5550// String returns the string representation.
5551//
5552// API parameter values that are decorated as "sensitive" in the API will not
5553// be included in the string output. The member name will be present, but the
5554// value will be replaced with "sensitive".
5555func (s DescribeAccountLimitsOutput) String() string {
5556	return awsutil.Prettify(s)
5557}
5558
5559// GoString returns the string representation.
5560//
5561// API parameter values that are decorated as "sensitive" in the API will not
5562// be included in the string output. The member name will be present, but the
5563// value will be replaced with "sensitive".
5564func (s DescribeAccountLimitsOutput) GoString() string {
5565	return s.String()
5566}
5567
5568// SetLimits sets the Limits field's value.
5569func (s *DescribeAccountLimitsOutput) SetLimits(v []*Limit) *DescribeAccountLimitsOutput {
5570	s.Limits = v
5571	return s
5572}
5573
5574// SetNextMarker sets the NextMarker field's value.
5575func (s *DescribeAccountLimitsOutput) SetNextMarker(v string) *DescribeAccountLimitsOutput {
5576	s.NextMarker = &v
5577	return s
5578}
5579
5580type DescribeListenerCertificatesInput struct {
5581	_ struct{} `type:"structure"`
5582
5583	// The Amazon Resource Names (ARN) of the listener.
5584	//
5585	// ListenerArn is a required field
5586	ListenerArn *string `type:"string" required:"true"`
5587
5588	// The marker for the next set of results. (You received this marker from a
5589	// previous call.)
5590	Marker *string `type:"string"`
5591
5592	// The maximum number of results to return with this call.
5593	PageSize *int64 `min:"1" type:"integer"`
5594}
5595
5596// String returns the string representation.
5597//
5598// API parameter values that are decorated as "sensitive" in the API will not
5599// be included in the string output. The member name will be present, but the
5600// value will be replaced with "sensitive".
5601func (s DescribeListenerCertificatesInput) String() string {
5602	return awsutil.Prettify(s)
5603}
5604
5605// GoString returns the string representation.
5606//
5607// API parameter values that are decorated as "sensitive" in the API will not
5608// be included in the string output. The member name will be present, but the
5609// value will be replaced with "sensitive".
5610func (s DescribeListenerCertificatesInput) GoString() string {
5611	return s.String()
5612}
5613
5614// Validate inspects the fields of the type to determine if they are valid.
5615func (s *DescribeListenerCertificatesInput) Validate() error {
5616	invalidParams := request.ErrInvalidParams{Context: "DescribeListenerCertificatesInput"}
5617	if s.ListenerArn == nil {
5618		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
5619	}
5620	if s.PageSize != nil && *s.PageSize < 1 {
5621		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
5622	}
5623
5624	if invalidParams.Len() > 0 {
5625		return invalidParams
5626	}
5627	return nil
5628}
5629
5630// SetListenerArn sets the ListenerArn field's value.
5631func (s *DescribeListenerCertificatesInput) SetListenerArn(v string) *DescribeListenerCertificatesInput {
5632	s.ListenerArn = &v
5633	return s
5634}
5635
5636// SetMarker sets the Marker field's value.
5637func (s *DescribeListenerCertificatesInput) SetMarker(v string) *DescribeListenerCertificatesInput {
5638	s.Marker = &v
5639	return s
5640}
5641
5642// SetPageSize sets the PageSize field's value.
5643func (s *DescribeListenerCertificatesInput) SetPageSize(v int64) *DescribeListenerCertificatesInput {
5644	s.PageSize = &v
5645	return s
5646}
5647
5648type DescribeListenerCertificatesOutput struct {
5649	_ struct{} `type:"structure"`
5650
5651	// Information about the certificates.
5652	Certificates []*Certificate `type:"list"`
5653
5654	// If there are additional results, this is the marker for the next set of results.
5655	// Otherwise, this is null.
5656	NextMarker *string `type:"string"`
5657}
5658
5659// String returns the string representation.
5660//
5661// API parameter values that are decorated as "sensitive" in the API will not
5662// be included in the string output. The member name will be present, but the
5663// value will be replaced with "sensitive".
5664func (s DescribeListenerCertificatesOutput) String() string {
5665	return awsutil.Prettify(s)
5666}
5667
5668// GoString returns the string representation.
5669//
5670// API parameter values that are decorated as "sensitive" in the API will not
5671// be included in the string output. The member name will be present, but the
5672// value will be replaced with "sensitive".
5673func (s DescribeListenerCertificatesOutput) GoString() string {
5674	return s.String()
5675}
5676
5677// SetCertificates sets the Certificates field's value.
5678func (s *DescribeListenerCertificatesOutput) SetCertificates(v []*Certificate) *DescribeListenerCertificatesOutput {
5679	s.Certificates = v
5680	return s
5681}
5682
5683// SetNextMarker sets the NextMarker field's value.
5684func (s *DescribeListenerCertificatesOutput) SetNextMarker(v string) *DescribeListenerCertificatesOutput {
5685	s.NextMarker = &v
5686	return s
5687}
5688
5689type DescribeListenersInput struct {
5690	_ struct{} `type:"structure"`
5691
5692	// The Amazon Resource Names (ARN) of the listeners.
5693	ListenerArns []*string `type:"list"`
5694
5695	// The Amazon Resource Name (ARN) of the load balancer.
5696	LoadBalancerArn *string `type:"string"`
5697
5698	// The marker for the next set of results. (You received this marker from a
5699	// previous call.)
5700	Marker *string `type:"string"`
5701
5702	// The maximum number of results to return with this call.
5703	PageSize *int64 `min:"1" type:"integer"`
5704}
5705
5706// String returns the string representation.
5707//
5708// API parameter values that are decorated as "sensitive" in the API will not
5709// be included in the string output. The member name will be present, but the
5710// value will be replaced with "sensitive".
5711func (s DescribeListenersInput) String() string {
5712	return awsutil.Prettify(s)
5713}
5714
5715// GoString returns the string representation.
5716//
5717// API parameter values that are decorated as "sensitive" in the API will not
5718// be included in the string output. The member name will be present, but the
5719// value will be replaced with "sensitive".
5720func (s DescribeListenersInput) GoString() string {
5721	return s.String()
5722}
5723
5724// Validate inspects the fields of the type to determine if they are valid.
5725func (s *DescribeListenersInput) Validate() error {
5726	invalidParams := request.ErrInvalidParams{Context: "DescribeListenersInput"}
5727	if s.PageSize != nil && *s.PageSize < 1 {
5728		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
5729	}
5730
5731	if invalidParams.Len() > 0 {
5732		return invalidParams
5733	}
5734	return nil
5735}
5736
5737// SetListenerArns sets the ListenerArns field's value.
5738func (s *DescribeListenersInput) SetListenerArns(v []*string) *DescribeListenersInput {
5739	s.ListenerArns = v
5740	return s
5741}
5742
5743// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5744func (s *DescribeListenersInput) SetLoadBalancerArn(v string) *DescribeListenersInput {
5745	s.LoadBalancerArn = &v
5746	return s
5747}
5748
5749// SetMarker sets the Marker field's value.
5750func (s *DescribeListenersInput) SetMarker(v string) *DescribeListenersInput {
5751	s.Marker = &v
5752	return s
5753}
5754
5755// SetPageSize sets the PageSize field's value.
5756func (s *DescribeListenersInput) SetPageSize(v int64) *DescribeListenersInput {
5757	s.PageSize = &v
5758	return s
5759}
5760
5761type DescribeListenersOutput struct {
5762	_ struct{} `type:"structure"`
5763
5764	// Information about the listeners.
5765	Listeners []*Listener `type:"list"`
5766
5767	// If there are additional results, this is the marker for the next set of results.
5768	// Otherwise, this is null.
5769	NextMarker *string `type:"string"`
5770}
5771
5772// String returns the string representation.
5773//
5774// API parameter values that are decorated as "sensitive" in the API will not
5775// be included in the string output. The member name will be present, but the
5776// value will be replaced with "sensitive".
5777func (s DescribeListenersOutput) String() string {
5778	return awsutil.Prettify(s)
5779}
5780
5781// GoString returns the string representation.
5782//
5783// API parameter values that are decorated as "sensitive" in the API will not
5784// be included in the string output. The member name will be present, but the
5785// value will be replaced with "sensitive".
5786func (s DescribeListenersOutput) GoString() string {
5787	return s.String()
5788}
5789
5790// SetListeners sets the Listeners field's value.
5791func (s *DescribeListenersOutput) SetListeners(v []*Listener) *DescribeListenersOutput {
5792	s.Listeners = v
5793	return s
5794}
5795
5796// SetNextMarker sets the NextMarker field's value.
5797func (s *DescribeListenersOutput) SetNextMarker(v string) *DescribeListenersOutput {
5798	s.NextMarker = &v
5799	return s
5800}
5801
5802type DescribeLoadBalancerAttributesInput struct {
5803	_ struct{} `type:"structure"`
5804
5805	// The Amazon Resource Name (ARN) of the load balancer.
5806	//
5807	// LoadBalancerArn is a required field
5808	LoadBalancerArn *string `type:"string" required:"true"`
5809}
5810
5811// String returns the string representation.
5812//
5813// API parameter values that are decorated as "sensitive" in the API will not
5814// be included in the string output. The member name will be present, but the
5815// value will be replaced with "sensitive".
5816func (s DescribeLoadBalancerAttributesInput) String() string {
5817	return awsutil.Prettify(s)
5818}
5819
5820// GoString returns the string representation.
5821//
5822// API parameter values that are decorated as "sensitive" in the API will not
5823// be included in the string output. The member name will be present, but the
5824// value will be replaced with "sensitive".
5825func (s DescribeLoadBalancerAttributesInput) GoString() string {
5826	return s.String()
5827}
5828
5829// Validate inspects the fields of the type to determine if they are valid.
5830func (s *DescribeLoadBalancerAttributesInput) Validate() error {
5831	invalidParams := request.ErrInvalidParams{Context: "DescribeLoadBalancerAttributesInput"}
5832	if s.LoadBalancerArn == nil {
5833		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
5834	}
5835
5836	if invalidParams.Len() > 0 {
5837		return invalidParams
5838	}
5839	return nil
5840}
5841
5842// SetLoadBalancerArn sets the LoadBalancerArn field's value.
5843func (s *DescribeLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *DescribeLoadBalancerAttributesInput {
5844	s.LoadBalancerArn = &v
5845	return s
5846}
5847
5848type DescribeLoadBalancerAttributesOutput struct {
5849	_ struct{} `type:"structure"`
5850
5851	// Information about the load balancer attributes.
5852	Attributes []*LoadBalancerAttribute `type:"list"`
5853}
5854
5855// String returns the string representation.
5856//
5857// API parameter values that are decorated as "sensitive" in the API will not
5858// be included in the string output. The member name will be present, but the
5859// value will be replaced with "sensitive".
5860func (s DescribeLoadBalancerAttributesOutput) String() string {
5861	return awsutil.Prettify(s)
5862}
5863
5864// GoString returns the string representation.
5865//
5866// API parameter values that are decorated as "sensitive" in the API will not
5867// be included in the string output. The member name will be present, but the
5868// value will be replaced with "sensitive".
5869func (s DescribeLoadBalancerAttributesOutput) GoString() string {
5870	return s.String()
5871}
5872
5873// SetAttributes sets the Attributes field's value.
5874func (s *DescribeLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAttribute) *DescribeLoadBalancerAttributesOutput {
5875	s.Attributes = v
5876	return s
5877}
5878
5879type DescribeLoadBalancersInput struct {
5880	_ struct{} `type:"structure"`
5881
5882	// The Amazon Resource Names (ARN) of the load balancers. You can specify up
5883	// to 20 load balancers in a single call.
5884	LoadBalancerArns []*string `type:"list"`
5885
5886	// The marker for the next set of results. (You received this marker from a
5887	// previous call.)
5888	Marker *string `type:"string"`
5889
5890	// The names of the load balancers.
5891	Names []*string `type:"list"`
5892
5893	// The maximum number of results to return with this call.
5894	PageSize *int64 `min:"1" type:"integer"`
5895}
5896
5897// String returns the string representation.
5898//
5899// API parameter values that are decorated as "sensitive" in the API will not
5900// be included in the string output. The member name will be present, but the
5901// value will be replaced with "sensitive".
5902func (s DescribeLoadBalancersInput) String() string {
5903	return awsutil.Prettify(s)
5904}
5905
5906// GoString returns the string representation.
5907//
5908// API parameter values that are decorated as "sensitive" in the API will not
5909// be included in the string output. The member name will be present, but the
5910// value will be replaced with "sensitive".
5911func (s DescribeLoadBalancersInput) GoString() string {
5912	return s.String()
5913}
5914
5915// Validate inspects the fields of the type to determine if they are valid.
5916func (s *DescribeLoadBalancersInput) Validate() error {
5917	invalidParams := request.ErrInvalidParams{Context: "DescribeLoadBalancersInput"}
5918	if s.PageSize != nil && *s.PageSize < 1 {
5919		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
5920	}
5921
5922	if invalidParams.Len() > 0 {
5923		return invalidParams
5924	}
5925	return nil
5926}
5927
5928// SetLoadBalancerArns sets the LoadBalancerArns field's value.
5929func (s *DescribeLoadBalancersInput) SetLoadBalancerArns(v []*string) *DescribeLoadBalancersInput {
5930	s.LoadBalancerArns = v
5931	return s
5932}
5933
5934// SetMarker sets the Marker field's value.
5935func (s *DescribeLoadBalancersInput) SetMarker(v string) *DescribeLoadBalancersInput {
5936	s.Marker = &v
5937	return s
5938}
5939
5940// SetNames sets the Names field's value.
5941func (s *DescribeLoadBalancersInput) SetNames(v []*string) *DescribeLoadBalancersInput {
5942	s.Names = v
5943	return s
5944}
5945
5946// SetPageSize sets the PageSize field's value.
5947func (s *DescribeLoadBalancersInput) SetPageSize(v int64) *DescribeLoadBalancersInput {
5948	s.PageSize = &v
5949	return s
5950}
5951
5952type DescribeLoadBalancersOutput struct {
5953	_ struct{} `type:"structure"`
5954
5955	// Information about the load balancers.
5956	LoadBalancers []*LoadBalancer `type:"list"`
5957
5958	// If there are additional results, this is the marker for the next set of results.
5959	// Otherwise, this is null.
5960	NextMarker *string `type:"string"`
5961}
5962
5963// String returns the string representation.
5964//
5965// API parameter values that are decorated as "sensitive" in the API will not
5966// be included in the string output. The member name will be present, but the
5967// value will be replaced with "sensitive".
5968func (s DescribeLoadBalancersOutput) String() string {
5969	return awsutil.Prettify(s)
5970}
5971
5972// GoString returns the string representation.
5973//
5974// API parameter values that are decorated as "sensitive" in the API will not
5975// be included in the string output. The member name will be present, but the
5976// value will be replaced with "sensitive".
5977func (s DescribeLoadBalancersOutput) GoString() string {
5978	return s.String()
5979}
5980
5981// SetLoadBalancers sets the LoadBalancers field's value.
5982func (s *DescribeLoadBalancersOutput) SetLoadBalancers(v []*LoadBalancer) *DescribeLoadBalancersOutput {
5983	s.LoadBalancers = v
5984	return s
5985}
5986
5987// SetNextMarker sets the NextMarker field's value.
5988func (s *DescribeLoadBalancersOutput) SetNextMarker(v string) *DescribeLoadBalancersOutput {
5989	s.NextMarker = &v
5990	return s
5991}
5992
5993type DescribeRulesInput struct {
5994	_ struct{} `type:"structure"`
5995
5996	// The Amazon Resource Name (ARN) of the listener.
5997	ListenerArn *string `type:"string"`
5998
5999	// The marker for the next set of results. (You received this marker from a
6000	// previous call.)
6001	Marker *string `type:"string"`
6002
6003	// The maximum number of results to return with this call.
6004	PageSize *int64 `min:"1" type:"integer"`
6005
6006	// The Amazon Resource Names (ARN) of the rules.
6007	RuleArns []*string `type:"list"`
6008}
6009
6010// String returns the string representation.
6011//
6012// API parameter values that are decorated as "sensitive" in the API will not
6013// be included in the string output. The member name will be present, but the
6014// value will be replaced with "sensitive".
6015func (s DescribeRulesInput) String() string {
6016	return awsutil.Prettify(s)
6017}
6018
6019// GoString returns the string representation.
6020//
6021// API parameter values that are decorated as "sensitive" in the API will not
6022// be included in the string output. The member name will be present, but the
6023// value will be replaced with "sensitive".
6024func (s DescribeRulesInput) GoString() string {
6025	return s.String()
6026}
6027
6028// Validate inspects the fields of the type to determine if they are valid.
6029func (s *DescribeRulesInput) Validate() error {
6030	invalidParams := request.ErrInvalidParams{Context: "DescribeRulesInput"}
6031	if s.PageSize != nil && *s.PageSize < 1 {
6032		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
6033	}
6034
6035	if invalidParams.Len() > 0 {
6036		return invalidParams
6037	}
6038	return nil
6039}
6040
6041// SetListenerArn sets the ListenerArn field's value.
6042func (s *DescribeRulesInput) SetListenerArn(v string) *DescribeRulesInput {
6043	s.ListenerArn = &v
6044	return s
6045}
6046
6047// SetMarker sets the Marker field's value.
6048func (s *DescribeRulesInput) SetMarker(v string) *DescribeRulesInput {
6049	s.Marker = &v
6050	return s
6051}
6052
6053// SetPageSize sets the PageSize field's value.
6054func (s *DescribeRulesInput) SetPageSize(v int64) *DescribeRulesInput {
6055	s.PageSize = &v
6056	return s
6057}
6058
6059// SetRuleArns sets the RuleArns field's value.
6060func (s *DescribeRulesInput) SetRuleArns(v []*string) *DescribeRulesInput {
6061	s.RuleArns = v
6062	return s
6063}
6064
6065type DescribeRulesOutput struct {
6066	_ struct{} `type:"structure"`
6067
6068	// If there are additional results, this is the marker for the next set of results.
6069	// Otherwise, this is null.
6070	NextMarker *string `type:"string"`
6071
6072	// Information about the rules.
6073	Rules []*Rule `type:"list"`
6074}
6075
6076// String returns the string representation.
6077//
6078// API parameter values that are decorated as "sensitive" in the API will not
6079// be included in the string output. The member name will be present, but the
6080// value will be replaced with "sensitive".
6081func (s DescribeRulesOutput) String() string {
6082	return awsutil.Prettify(s)
6083}
6084
6085// GoString returns the string representation.
6086//
6087// API parameter values that are decorated as "sensitive" in the API will not
6088// be included in the string output. The member name will be present, but the
6089// value will be replaced with "sensitive".
6090func (s DescribeRulesOutput) GoString() string {
6091	return s.String()
6092}
6093
6094// SetNextMarker sets the NextMarker field's value.
6095func (s *DescribeRulesOutput) SetNextMarker(v string) *DescribeRulesOutput {
6096	s.NextMarker = &v
6097	return s
6098}
6099
6100// SetRules sets the Rules field's value.
6101func (s *DescribeRulesOutput) SetRules(v []*Rule) *DescribeRulesOutput {
6102	s.Rules = v
6103	return s
6104}
6105
6106type DescribeSSLPoliciesInput struct {
6107	_ struct{} `type:"structure"`
6108
6109	// The type of load balancer. The default lists the SSL policies for all load
6110	// balancers.
6111	LoadBalancerType *string `type:"string" enum:"LoadBalancerTypeEnum"`
6112
6113	// The marker for the next set of results. (You received this marker from a
6114	// previous call.)
6115	Marker *string `type:"string"`
6116
6117	// The names of the policies.
6118	Names []*string `type:"list"`
6119
6120	// The maximum number of results to return with this call.
6121	PageSize *int64 `min:"1" type:"integer"`
6122}
6123
6124// String returns the string representation.
6125//
6126// API parameter values that are decorated as "sensitive" in the API will not
6127// be included in the string output. The member name will be present, but the
6128// value will be replaced with "sensitive".
6129func (s DescribeSSLPoliciesInput) String() string {
6130	return awsutil.Prettify(s)
6131}
6132
6133// GoString returns the string representation.
6134//
6135// API parameter values that are decorated as "sensitive" in the API will not
6136// be included in the string output. The member name will be present, but the
6137// value will be replaced with "sensitive".
6138func (s DescribeSSLPoliciesInput) GoString() string {
6139	return s.String()
6140}
6141
6142// Validate inspects the fields of the type to determine if they are valid.
6143func (s *DescribeSSLPoliciesInput) Validate() error {
6144	invalidParams := request.ErrInvalidParams{Context: "DescribeSSLPoliciesInput"}
6145	if s.PageSize != nil && *s.PageSize < 1 {
6146		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
6147	}
6148
6149	if invalidParams.Len() > 0 {
6150		return invalidParams
6151	}
6152	return nil
6153}
6154
6155// SetLoadBalancerType sets the LoadBalancerType field's value.
6156func (s *DescribeSSLPoliciesInput) SetLoadBalancerType(v string) *DescribeSSLPoliciesInput {
6157	s.LoadBalancerType = &v
6158	return s
6159}
6160
6161// SetMarker sets the Marker field's value.
6162func (s *DescribeSSLPoliciesInput) SetMarker(v string) *DescribeSSLPoliciesInput {
6163	s.Marker = &v
6164	return s
6165}
6166
6167// SetNames sets the Names field's value.
6168func (s *DescribeSSLPoliciesInput) SetNames(v []*string) *DescribeSSLPoliciesInput {
6169	s.Names = v
6170	return s
6171}
6172
6173// SetPageSize sets the PageSize field's value.
6174func (s *DescribeSSLPoliciesInput) SetPageSize(v int64) *DescribeSSLPoliciesInput {
6175	s.PageSize = &v
6176	return s
6177}
6178
6179type DescribeSSLPoliciesOutput struct {
6180	_ struct{} `type:"structure"`
6181
6182	// If there are additional results, this is the marker for the next set of results.
6183	// Otherwise, this is null.
6184	NextMarker *string `type:"string"`
6185
6186	// Information about the security policies.
6187	SslPolicies []*SslPolicy `type:"list"`
6188}
6189
6190// String returns the string representation.
6191//
6192// API parameter values that are decorated as "sensitive" in the API will not
6193// be included in the string output. The member name will be present, but the
6194// value will be replaced with "sensitive".
6195func (s DescribeSSLPoliciesOutput) String() string {
6196	return awsutil.Prettify(s)
6197}
6198
6199// GoString returns the string representation.
6200//
6201// API parameter values that are decorated as "sensitive" in the API will not
6202// be included in the string output. The member name will be present, but the
6203// value will be replaced with "sensitive".
6204func (s DescribeSSLPoliciesOutput) GoString() string {
6205	return s.String()
6206}
6207
6208// SetNextMarker sets the NextMarker field's value.
6209func (s *DescribeSSLPoliciesOutput) SetNextMarker(v string) *DescribeSSLPoliciesOutput {
6210	s.NextMarker = &v
6211	return s
6212}
6213
6214// SetSslPolicies sets the SslPolicies field's value.
6215func (s *DescribeSSLPoliciesOutput) SetSslPolicies(v []*SslPolicy) *DescribeSSLPoliciesOutput {
6216	s.SslPolicies = v
6217	return s
6218}
6219
6220type DescribeTagsInput struct {
6221	_ struct{} `type:"structure"`
6222
6223	// The Amazon Resource Names (ARN) of the resources. You can specify up to 20
6224	// resources in a single call.
6225	//
6226	// ResourceArns is a required field
6227	ResourceArns []*string `type:"list" required:"true"`
6228}
6229
6230// String returns the string representation.
6231//
6232// API parameter values that are decorated as "sensitive" in the API will not
6233// be included in the string output. The member name will be present, but the
6234// value will be replaced with "sensitive".
6235func (s DescribeTagsInput) String() string {
6236	return awsutil.Prettify(s)
6237}
6238
6239// GoString returns the string representation.
6240//
6241// API parameter values that are decorated as "sensitive" in the API will not
6242// be included in the string output. The member name will be present, but the
6243// value will be replaced with "sensitive".
6244func (s DescribeTagsInput) GoString() string {
6245	return s.String()
6246}
6247
6248// Validate inspects the fields of the type to determine if they are valid.
6249func (s *DescribeTagsInput) Validate() error {
6250	invalidParams := request.ErrInvalidParams{Context: "DescribeTagsInput"}
6251	if s.ResourceArns == nil {
6252		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
6253	}
6254
6255	if invalidParams.Len() > 0 {
6256		return invalidParams
6257	}
6258	return nil
6259}
6260
6261// SetResourceArns sets the ResourceArns field's value.
6262func (s *DescribeTagsInput) SetResourceArns(v []*string) *DescribeTagsInput {
6263	s.ResourceArns = v
6264	return s
6265}
6266
6267type DescribeTagsOutput struct {
6268	_ struct{} `type:"structure"`
6269
6270	// Information about the tags.
6271	TagDescriptions []*TagDescription `type:"list"`
6272}
6273
6274// String returns the string representation.
6275//
6276// API parameter values that are decorated as "sensitive" in the API will not
6277// be included in the string output. The member name will be present, but the
6278// value will be replaced with "sensitive".
6279func (s DescribeTagsOutput) String() string {
6280	return awsutil.Prettify(s)
6281}
6282
6283// GoString returns the string representation.
6284//
6285// API parameter values that are decorated as "sensitive" in the API will not
6286// be included in the string output. The member name will be present, but the
6287// value will be replaced with "sensitive".
6288func (s DescribeTagsOutput) GoString() string {
6289	return s.String()
6290}
6291
6292// SetTagDescriptions sets the TagDescriptions field's value.
6293func (s *DescribeTagsOutput) SetTagDescriptions(v []*TagDescription) *DescribeTagsOutput {
6294	s.TagDescriptions = v
6295	return s
6296}
6297
6298type DescribeTargetGroupAttributesInput struct {
6299	_ struct{} `type:"structure"`
6300
6301	// The Amazon Resource Name (ARN) of the target group.
6302	//
6303	// TargetGroupArn is a required field
6304	TargetGroupArn *string `type:"string" required:"true"`
6305}
6306
6307// String returns the string representation.
6308//
6309// API parameter values that are decorated as "sensitive" in the API will not
6310// be included in the string output. The member name will be present, but the
6311// value will be replaced with "sensitive".
6312func (s DescribeTargetGroupAttributesInput) String() string {
6313	return awsutil.Prettify(s)
6314}
6315
6316// GoString returns the string representation.
6317//
6318// API parameter values that are decorated as "sensitive" in the API will not
6319// be included in the string output. The member name will be present, but the
6320// value will be replaced with "sensitive".
6321func (s DescribeTargetGroupAttributesInput) GoString() string {
6322	return s.String()
6323}
6324
6325// Validate inspects the fields of the type to determine if they are valid.
6326func (s *DescribeTargetGroupAttributesInput) Validate() error {
6327	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetGroupAttributesInput"}
6328	if s.TargetGroupArn == nil {
6329		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
6330	}
6331
6332	if invalidParams.Len() > 0 {
6333		return invalidParams
6334	}
6335	return nil
6336}
6337
6338// SetTargetGroupArn sets the TargetGroupArn field's value.
6339func (s *DescribeTargetGroupAttributesInput) SetTargetGroupArn(v string) *DescribeTargetGroupAttributesInput {
6340	s.TargetGroupArn = &v
6341	return s
6342}
6343
6344type DescribeTargetGroupAttributesOutput struct {
6345	_ struct{} `type:"structure"`
6346
6347	// Information about the target group attributes
6348	Attributes []*TargetGroupAttribute `type:"list"`
6349}
6350
6351// String returns the string representation.
6352//
6353// API parameter values that are decorated as "sensitive" in the API will not
6354// be included in the string output. The member name will be present, but the
6355// value will be replaced with "sensitive".
6356func (s DescribeTargetGroupAttributesOutput) String() string {
6357	return awsutil.Prettify(s)
6358}
6359
6360// GoString returns the string representation.
6361//
6362// API parameter values that are decorated as "sensitive" in the API will not
6363// be included in the string output. The member name will be present, but the
6364// value will be replaced with "sensitive".
6365func (s DescribeTargetGroupAttributesOutput) GoString() string {
6366	return s.String()
6367}
6368
6369// SetAttributes sets the Attributes field's value.
6370func (s *DescribeTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttribute) *DescribeTargetGroupAttributesOutput {
6371	s.Attributes = v
6372	return s
6373}
6374
6375type DescribeTargetGroupsInput struct {
6376	_ struct{} `type:"structure"`
6377
6378	// The Amazon Resource Name (ARN) of the load balancer.
6379	LoadBalancerArn *string `type:"string"`
6380
6381	// The marker for the next set of results. (You received this marker from a
6382	// previous call.)
6383	Marker *string `type:"string"`
6384
6385	// The names of the target groups.
6386	Names []*string `type:"list"`
6387
6388	// The maximum number of results to return with this call.
6389	PageSize *int64 `min:"1" type:"integer"`
6390
6391	// The Amazon Resource Names (ARN) of the target groups.
6392	TargetGroupArns []*string `type:"list"`
6393}
6394
6395// String returns the string representation.
6396//
6397// API parameter values that are decorated as "sensitive" in the API will not
6398// be included in the string output. The member name will be present, but the
6399// value will be replaced with "sensitive".
6400func (s DescribeTargetGroupsInput) String() string {
6401	return awsutil.Prettify(s)
6402}
6403
6404// GoString returns the string representation.
6405//
6406// API parameter values that are decorated as "sensitive" in the API will not
6407// be included in the string output. The member name will be present, but the
6408// value will be replaced with "sensitive".
6409func (s DescribeTargetGroupsInput) GoString() string {
6410	return s.String()
6411}
6412
6413// Validate inspects the fields of the type to determine if they are valid.
6414func (s *DescribeTargetGroupsInput) Validate() error {
6415	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetGroupsInput"}
6416	if s.PageSize != nil && *s.PageSize < 1 {
6417		invalidParams.Add(request.NewErrParamMinValue("PageSize", 1))
6418	}
6419
6420	if invalidParams.Len() > 0 {
6421		return invalidParams
6422	}
6423	return nil
6424}
6425
6426// SetLoadBalancerArn sets the LoadBalancerArn field's value.
6427func (s *DescribeTargetGroupsInput) SetLoadBalancerArn(v string) *DescribeTargetGroupsInput {
6428	s.LoadBalancerArn = &v
6429	return s
6430}
6431
6432// SetMarker sets the Marker field's value.
6433func (s *DescribeTargetGroupsInput) SetMarker(v string) *DescribeTargetGroupsInput {
6434	s.Marker = &v
6435	return s
6436}
6437
6438// SetNames sets the Names field's value.
6439func (s *DescribeTargetGroupsInput) SetNames(v []*string) *DescribeTargetGroupsInput {
6440	s.Names = v
6441	return s
6442}
6443
6444// SetPageSize sets the PageSize field's value.
6445func (s *DescribeTargetGroupsInput) SetPageSize(v int64) *DescribeTargetGroupsInput {
6446	s.PageSize = &v
6447	return s
6448}
6449
6450// SetTargetGroupArns sets the TargetGroupArns field's value.
6451func (s *DescribeTargetGroupsInput) SetTargetGroupArns(v []*string) *DescribeTargetGroupsInput {
6452	s.TargetGroupArns = v
6453	return s
6454}
6455
6456type DescribeTargetGroupsOutput struct {
6457	_ struct{} `type:"structure"`
6458
6459	// If there are additional results, this is the marker for the next set of results.
6460	// Otherwise, this is null.
6461	NextMarker *string `type:"string"`
6462
6463	// Information about the target groups.
6464	TargetGroups []*TargetGroup `type:"list"`
6465}
6466
6467// String returns the string representation.
6468//
6469// API parameter values that are decorated as "sensitive" in the API will not
6470// be included in the string output. The member name will be present, but the
6471// value will be replaced with "sensitive".
6472func (s DescribeTargetGroupsOutput) String() string {
6473	return awsutil.Prettify(s)
6474}
6475
6476// GoString returns the string representation.
6477//
6478// API parameter values that are decorated as "sensitive" in the API will not
6479// be included in the string output. The member name will be present, but the
6480// value will be replaced with "sensitive".
6481func (s DescribeTargetGroupsOutput) GoString() string {
6482	return s.String()
6483}
6484
6485// SetNextMarker sets the NextMarker field's value.
6486func (s *DescribeTargetGroupsOutput) SetNextMarker(v string) *DescribeTargetGroupsOutput {
6487	s.NextMarker = &v
6488	return s
6489}
6490
6491// SetTargetGroups sets the TargetGroups field's value.
6492func (s *DescribeTargetGroupsOutput) SetTargetGroups(v []*TargetGroup) *DescribeTargetGroupsOutput {
6493	s.TargetGroups = v
6494	return s
6495}
6496
6497type DescribeTargetHealthInput struct {
6498	_ struct{} `type:"structure"`
6499
6500	// The Amazon Resource Name (ARN) of the target group.
6501	//
6502	// TargetGroupArn is a required field
6503	TargetGroupArn *string `type:"string" required:"true"`
6504
6505	// The targets.
6506	Targets []*TargetDescription `type:"list"`
6507}
6508
6509// String returns the string representation.
6510//
6511// API parameter values that are decorated as "sensitive" in the API will not
6512// be included in the string output. The member name will be present, but the
6513// value will be replaced with "sensitive".
6514func (s DescribeTargetHealthInput) String() string {
6515	return awsutil.Prettify(s)
6516}
6517
6518// GoString returns the string representation.
6519//
6520// API parameter values that are decorated as "sensitive" in the API will not
6521// be included in the string output. The member name will be present, but the
6522// value will be replaced with "sensitive".
6523func (s DescribeTargetHealthInput) GoString() string {
6524	return s.String()
6525}
6526
6527// Validate inspects the fields of the type to determine if they are valid.
6528func (s *DescribeTargetHealthInput) Validate() error {
6529	invalidParams := request.ErrInvalidParams{Context: "DescribeTargetHealthInput"}
6530	if s.TargetGroupArn == nil {
6531		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
6532	}
6533	if s.Targets != nil {
6534		for i, v := range s.Targets {
6535			if v == nil {
6536				continue
6537			}
6538			if err := v.Validate(); err != nil {
6539				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
6540			}
6541		}
6542	}
6543
6544	if invalidParams.Len() > 0 {
6545		return invalidParams
6546	}
6547	return nil
6548}
6549
6550// SetTargetGroupArn sets the TargetGroupArn field's value.
6551func (s *DescribeTargetHealthInput) SetTargetGroupArn(v string) *DescribeTargetHealthInput {
6552	s.TargetGroupArn = &v
6553	return s
6554}
6555
6556// SetTargets sets the Targets field's value.
6557func (s *DescribeTargetHealthInput) SetTargets(v []*TargetDescription) *DescribeTargetHealthInput {
6558	s.Targets = v
6559	return s
6560}
6561
6562type DescribeTargetHealthOutput struct {
6563	_ struct{} `type:"structure"`
6564
6565	// Information about the health of the targets.
6566	TargetHealthDescriptions []*TargetHealthDescription `type:"list"`
6567}
6568
6569// String returns the string representation.
6570//
6571// API parameter values that are decorated as "sensitive" in the API will not
6572// be included in the string output. The member name will be present, but the
6573// value will be replaced with "sensitive".
6574func (s DescribeTargetHealthOutput) String() string {
6575	return awsutil.Prettify(s)
6576}
6577
6578// GoString returns the string representation.
6579//
6580// API parameter values that are decorated as "sensitive" in the API will not
6581// be included in the string output. The member name will be present, but the
6582// value will be replaced with "sensitive".
6583func (s DescribeTargetHealthOutput) GoString() string {
6584	return s.String()
6585}
6586
6587// SetTargetHealthDescriptions sets the TargetHealthDescriptions field's value.
6588func (s *DescribeTargetHealthOutput) SetTargetHealthDescriptions(v []*TargetHealthDescription) *DescribeTargetHealthOutput {
6589	s.TargetHealthDescriptions = v
6590	return s
6591}
6592
6593// Information about an action that returns a custom HTTP response.
6594type FixedResponseActionConfig struct {
6595	_ struct{} `type:"structure"`
6596
6597	// The content type.
6598	//
6599	// Valid Values: text/plain | text/css | text/html | application/javascript
6600	// | application/json
6601	ContentType *string `type:"string"`
6602
6603	// The message.
6604	MessageBody *string `type:"string"`
6605
6606	// The HTTP response code (2XX, 4XX, or 5XX).
6607	//
6608	// StatusCode is a required field
6609	StatusCode *string `type:"string" required:"true"`
6610}
6611
6612// String returns the string representation.
6613//
6614// API parameter values that are decorated as "sensitive" in the API will not
6615// be included in the string output. The member name will be present, but the
6616// value will be replaced with "sensitive".
6617func (s FixedResponseActionConfig) String() string {
6618	return awsutil.Prettify(s)
6619}
6620
6621// GoString returns the string representation.
6622//
6623// API parameter values that are decorated as "sensitive" in the API will not
6624// be included in the string output. The member name will be present, but the
6625// value will be replaced with "sensitive".
6626func (s FixedResponseActionConfig) GoString() string {
6627	return s.String()
6628}
6629
6630// Validate inspects the fields of the type to determine if they are valid.
6631func (s *FixedResponseActionConfig) Validate() error {
6632	invalidParams := request.ErrInvalidParams{Context: "FixedResponseActionConfig"}
6633	if s.StatusCode == nil {
6634		invalidParams.Add(request.NewErrParamRequired("StatusCode"))
6635	}
6636
6637	if invalidParams.Len() > 0 {
6638		return invalidParams
6639	}
6640	return nil
6641}
6642
6643// SetContentType sets the ContentType field's value.
6644func (s *FixedResponseActionConfig) SetContentType(v string) *FixedResponseActionConfig {
6645	s.ContentType = &v
6646	return s
6647}
6648
6649// SetMessageBody sets the MessageBody field's value.
6650func (s *FixedResponseActionConfig) SetMessageBody(v string) *FixedResponseActionConfig {
6651	s.MessageBody = &v
6652	return s
6653}
6654
6655// SetStatusCode sets the StatusCode field's value.
6656func (s *FixedResponseActionConfig) SetStatusCode(v string) *FixedResponseActionConfig {
6657	s.StatusCode = &v
6658	return s
6659}
6660
6661// Information about a forward action.
6662type ForwardActionConfig struct {
6663	_ struct{} `type:"structure"`
6664
6665	// The target group stickiness for the rule.
6666	TargetGroupStickinessConfig *TargetGroupStickinessConfig `type:"structure"`
6667
6668	// One or more target groups. For Network Load Balancers, you can specify a
6669	// single target group.
6670	TargetGroups []*TargetGroupTuple `type:"list"`
6671}
6672
6673// String returns the string representation.
6674//
6675// API parameter values that are decorated as "sensitive" in the API will not
6676// be included in the string output. The member name will be present, but the
6677// value will be replaced with "sensitive".
6678func (s ForwardActionConfig) String() string {
6679	return awsutil.Prettify(s)
6680}
6681
6682// GoString returns the string representation.
6683//
6684// API parameter values that are decorated as "sensitive" in the API will not
6685// be included in the string output. The member name will be present, but the
6686// value will be replaced with "sensitive".
6687func (s ForwardActionConfig) GoString() string {
6688	return s.String()
6689}
6690
6691// SetTargetGroupStickinessConfig sets the TargetGroupStickinessConfig field's value.
6692func (s *ForwardActionConfig) SetTargetGroupStickinessConfig(v *TargetGroupStickinessConfig) *ForwardActionConfig {
6693	s.TargetGroupStickinessConfig = v
6694	return s
6695}
6696
6697// SetTargetGroups sets the TargetGroups field's value.
6698func (s *ForwardActionConfig) SetTargetGroups(v []*TargetGroupTuple) *ForwardActionConfig {
6699	s.TargetGroups = v
6700	return s
6701}
6702
6703// Information about a host header condition.
6704type HostHeaderConditionConfig struct {
6705	_ struct{} `type:"structure"`
6706
6707	// One or more host names. The maximum size of each name is 128 characters.
6708	// The comparison is case insensitive. The following wildcard characters are
6709	// supported: * (matches 0 or more characters) and ? (matches exactly 1 character).
6710	//
6711	// If you specify multiple strings, the condition is satisfied if one of the
6712	// strings matches the host name.
6713	Values []*string `type:"list"`
6714}
6715
6716// String returns the string representation.
6717//
6718// API parameter values that are decorated as "sensitive" in the API will not
6719// be included in the string output. The member name will be present, but the
6720// value will be replaced with "sensitive".
6721func (s HostHeaderConditionConfig) String() string {
6722	return awsutil.Prettify(s)
6723}
6724
6725// GoString returns the string representation.
6726//
6727// API parameter values that are decorated as "sensitive" in the API will not
6728// be included in the string output. The member name will be present, but the
6729// value will be replaced with "sensitive".
6730func (s HostHeaderConditionConfig) GoString() string {
6731	return s.String()
6732}
6733
6734// SetValues sets the Values field's value.
6735func (s *HostHeaderConditionConfig) SetValues(v []*string) *HostHeaderConditionConfig {
6736	s.Values = v
6737	return s
6738}
6739
6740// Information about an HTTP header condition.
6741//
6742// There is a set of standard HTTP header fields. You can also define custom
6743// HTTP header fields.
6744type HttpHeaderConditionConfig struct {
6745	_ struct{} `type:"structure"`
6746
6747	// The name of the HTTP header field. The maximum size is 40 characters. The
6748	// header name is case insensitive. The allowed characters are specified by
6749	// RFC 7230. Wildcards are not supported.
6750	//
6751	// You can't use an HTTP header condition to specify the host header. Use HostHeaderConditionConfig
6752	// to specify a host header condition.
6753	HttpHeaderName *string `type:"string"`
6754
6755	// One or more strings to compare against the value of the HTTP header. The
6756	// maximum size of each string is 128 characters. The comparison strings are
6757	// case insensitive. The following wildcard characters are supported: * (matches
6758	// 0 or more characters) and ? (matches exactly 1 character).
6759	//
6760	// If the same header appears multiple times in the request, we search them
6761	// in order until a match is found.
6762	//
6763	// If you specify multiple strings, the condition is satisfied if one of the
6764	// strings matches the value of the HTTP header. To require that all of the
6765	// strings are a match, create one condition per string.
6766	Values []*string `type:"list"`
6767}
6768
6769// String returns the string representation.
6770//
6771// API parameter values that are decorated as "sensitive" in the API will not
6772// be included in the string output. The member name will be present, but the
6773// value will be replaced with "sensitive".
6774func (s HttpHeaderConditionConfig) String() string {
6775	return awsutil.Prettify(s)
6776}
6777
6778// GoString returns the string representation.
6779//
6780// API parameter values that are decorated as "sensitive" in the API will not
6781// be included in the string output. The member name will be present, but the
6782// value will be replaced with "sensitive".
6783func (s HttpHeaderConditionConfig) GoString() string {
6784	return s.String()
6785}
6786
6787// SetHttpHeaderName sets the HttpHeaderName field's value.
6788func (s *HttpHeaderConditionConfig) SetHttpHeaderName(v string) *HttpHeaderConditionConfig {
6789	s.HttpHeaderName = &v
6790	return s
6791}
6792
6793// SetValues sets the Values field's value.
6794func (s *HttpHeaderConditionConfig) SetValues(v []*string) *HttpHeaderConditionConfig {
6795	s.Values = v
6796	return s
6797}
6798
6799// Information about an HTTP method condition.
6800//
6801// HTTP defines a set of request methods, also referred to as HTTP verbs. For
6802// more information, see the HTTP Method Registry (https://www.iana.org/assignments/http-methods/http-methods.xhtml).
6803// You can also define custom HTTP methods.
6804type HttpRequestMethodConditionConfig struct {
6805	_ struct{} `type:"structure"`
6806
6807	// The name of the request method. The maximum size is 40 characters. The allowed
6808	// characters are A-Z, hyphen (-), and underscore (_). The comparison is case
6809	// sensitive. Wildcards are not supported; therefore, the method name must be
6810	// an exact match.
6811	//
6812	// If you specify multiple strings, the condition is satisfied if one of the
6813	// strings matches the HTTP request method. We recommend that you route GET
6814	// and HEAD requests in the same way, because the response to a HEAD request
6815	// may be cached.
6816	Values []*string `type:"list"`
6817}
6818
6819// String returns the string representation.
6820//
6821// API parameter values that are decorated as "sensitive" in the API will not
6822// be included in the string output. The member name will be present, but the
6823// value will be replaced with "sensitive".
6824func (s HttpRequestMethodConditionConfig) String() string {
6825	return awsutil.Prettify(s)
6826}
6827
6828// GoString returns the string representation.
6829//
6830// API parameter values that are decorated as "sensitive" in the API will not
6831// be included in the string output. The member name will be present, but the
6832// value will be replaced with "sensitive".
6833func (s HttpRequestMethodConditionConfig) GoString() string {
6834	return s.String()
6835}
6836
6837// SetValues sets the Values field's value.
6838func (s *HttpRequestMethodConditionConfig) SetValues(v []*string) *HttpRequestMethodConditionConfig {
6839	s.Values = v
6840	return s
6841}
6842
6843// Information about an Elastic Load Balancing resource limit for your Amazon
6844// Web Services account.
6845type Limit struct {
6846	_ struct{} `type:"structure"`
6847
6848	// The maximum value of the limit.
6849	Max *string `type:"string"`
6850
6851	// The name of the limit. The possible values are:
6852	//
6853	//    * application-load-balancers
6854	//
6855	//    * condition-values-per-alb-rule
6856	//
6857	//    * condition-wildcards-per-alb-rule
6858	//
6859	//    * gateway-load-balancers
6860	//
6861	//    * gateway-load-balancers-per-vpc
6862	//
6863	//    * geneve-target-groups
6864	//
6865	//    * listeners-per-application-load-balancer
6866	//
6867	//    * listeners-per-network-load-balancer
6868	//
6869	//    * network-load-balancers
6870	//
6871	//    * rules-per-application-load-balancer
6872	//
6873	//    * target-groups
6874	//
6875	//    * target-groups-per-action-on-application-load-balancer
6876	//
6877	//    * target-groups-per-action-on-network-load-balancer
6878	//
6879	//    * target-groups-per-application-load-balancer
6880	//
6881	//    * targets-per-application-load-balancer
6882	//
6883	//    * targets-per-availability-zone-per-gateway-load-balancer
6884	//
6885	//    * targets-per-availability-zone-per-network-load-balancer
6886	//
6887	//    * targets-per-network-load-balancer
6888	Name *string `type:"string"`
6889}
6890
6891// String returns the string representation.
6892//
6893// API parameter values that are decorated as "sensitive" in the API will not
6894// be included in the string output. The member name will be present, but the
6895// value will be replaced with "sensitive".
6896func (s Limit) String() string {
6897	return awsutil.Prettify(s)
6898}
6899
6900// GoString returns the string representation.
6901//
6902// API parameter values that are decorated as "sensitive" in the API will not
6903// be included in the string output. The member name will be present, but the
6904// value will be replaced with "sensitive".
6905func (s Limit) GoString() string {
6906	return s.String()
6907}
6908
6909// SetMax sets the Max field's value.
6910func (s *Limit) SetMax(v string) *Limit {
6911	s.Max = &v
6912	return s
6913}
6914
6915// SetName sets the Name field's value.
6916func (s *Limit) SetName(v string) *Limit {
6917	s.Name = &v
6918	return s
6919}
6920
6921// Information about a listener.
6922type Listener struct {
6923	_ struct{} `type:"structure"`
6924
6925	// [TLS listener] The name of the Application-Layer Protocol Negotiation (ALPN)
6926	// policy.
6927	AlpnPolicy []*string `type:"list"`
6928
6929	// [HTTPS or TLS listener] The default certificate for the listener.
6930	Certificates []*Certificate `type:"list"`
6931
6932	// The default actions for the listener.
6933	DefaultActions []*Action `type:"list"`
6934
6935	// The Amazon Resource Name (ARN) of the listener.
6936	ListenerArn *string `type:"string"`
6937
6938	// The Amazon Resource Name (ARN) of the load balancer.
6939	LoadBalancerArn *string `type:"string"`
6940
6941	// The port on which the load balancer is listening.
6942	Port *int64 `min:"1" type:"integer"`
6943
6944	// The protocol for connections from clients to the load balancer.
6945	Protocol *string `type:"string" enum:"ProtocolEnum"`
6946
6947	// [HTTPS or TLS listener] The security policy that defines which protocols
6948	// and ciphers are supported.
6949	SslPolicy *string `type:"string"`
6950}
6951
6952// String returns the string representation.
6953//
6954// API parameter values that are decorated as "sensitive" in the API will not
6955// be included in the string output. The member name will be present, but the
6956// value will be replaced with "sensitive".
6957func (s Listener) String() string {
6958	return awsutil.Prettify(s)
6959}
6960
6961// GoString returns the string representation.
6962//
6963// API parameter values that are decorated as "sensitive" in the API will not
6964// be included in the string output. The member name will be present, but the
6965// value will be replaced with "sensitive".
6966func (s Listener) GoString() string {
6967	return s.String()
6968}
6969
6970// SetAlpnPolicy sets the AlpnPolicy field's value.
6971func (s *Listener) SetAlpnPolicy(v []*string) *Listener {
6972	s.AlpnPolicy = v
6973	return s
6974}
6975
6976// SetCertificates sets the Certificates field's value.
6977func (s *Listener) SetCertificates(v []*Certificate) *Listener {
6978	s.Certificates = v
6979	return s
6980}
6981
6982// SetDefaultActions sets the DefaultActions field's value.
6983func (s *Listener) SetDefaultActions(v []*Action) *Listener {
6984	s.DefaultActions = v
6985	return s
6986}
6987
6988// SetListenerArn sets the ListenerArn field's value.
6989func (s *Listener) SetListenerArn(v string) *Listener {
6990	s.ListenerArn = &v
6991	return s
6992}
6993
6994// SetLoadBalancerArn sets the LoadBalancerArn field's value.
6995func (s *Listener) SetLoadBalancerArn(v string) *Listener {
6996	s.LoadBalancerArn = &v
6997	return s
6998}
6999
7000// SetPort sets the Port field's value.
7001func (s *Listener) SetPort(v int64) *Listener {
7002	s.Port = &v
7003	return s
7004}
7005
7006// SetProtocol sets the Protocol field's value.
7007func (s *Listener) SetProtocol(v string) *Listener {
7008	s.Protocol = &v
7009	return s
7010}
7011
7012// SetSslPolicy sets the SslPolicy field's value.
7013func (s *Listener) SetSslPolicy(v string) *Listener {
7014	s.SslPolicy = &v
7015	return s
7016}
7017
7018// Information about a load balancer.
7019type LoadBalancer struct {
7020	_ struct{} `type:"structure"`
7021
7022	// The subnets for the load balancer.
7023	AvailabilityZones []*AvailabilityZone `type:"list"`
7024
7025	// The ID of the Amazon Route 53 hosted zone associated with the load balancer.
7026	CanonicalHostedZoneId *string `type:"string"`
7027
7028	// The date and time the load balancer was created.
7029	CreatedTime *time.Time `type:"timestamp"`
7030
7031	// [Application Load Balancers on Outposts] The ID of the customer-owned address
7032	// pool.
7033	CustomerOwnedIpv4Pool *string `type:"string"`
7034
7035	// The public DNS name of the load balancer.
7036	DNSName *string `type:"string"`
7037
7038	// The type of IP addresses used by the subnets for your load balancer. The
7039	// possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and
7040	// IPv6 addresses).
7041	IpAddressType *string `type:"string" enum:"IpAddressType"`
7042
7043	// The Amazon Resource Name (ARN) of the load balancer.
7044	LoadBalancerArn *string `type:"string"`
7045
7046	// The name of the load balancer.
7047	LoadBalancerName *string `type:"string"`
7048
7049	// The nodes of an Internet-facing load balancer have public IP addresses. The
7050	// DNS name of an Internet-facing load balancer is publicly resolvable to the
7051	// public IP addresses of the nodes. Therefore, Internet-facing load balancers
7052	// can route requests from clients over the internet.
7053	//
7054	// The nodes of an internal load balancer have only private IP addresses. The
7055	// DNS name of an internal load balancer is publicly resolvable to the private
7056	// IP addresses of the nodes. Therefore, internal load balancers can route requests
7057	// only from clients with access to the VPC for the load balancer.
7058	Scheme *string `type:"string" enum:"LoadBalancerSchemeEnum"`
7059
7060	// The IDs of the security groups for the load balancer.
7061	SecurityGroups []*string `type:"list"`
7062
7063	// The state of the load balancer.
7064	State *LoadBalancerState `type:"structure"`
7065
7066	// The type of load balancer.
7067	Type *string `type:"string" enum:"LoadBalancerTypeEnum"`
7068
7069	// The ID of the VPC for the load balancer.
7070	VpcId *string `type:"string"`
7071}
7072
7073// String returns the string representation.
7074//
7075// API parameter values that are decorated as "sensitive" in the API will not
7076// be included in the string output. The member name will be present, but the
7077// value will be replaced with "sensitive".
7078func (s LoadBalancer) String() string {
7079	return awsutil.Prettify(s)
7080}
7081
7082// GoString returns the string representation.
7083//
7084// API parameter values that are decorated as "sensitive" in the API will not
7085// be included in the string output. The member name will be present, but the
7086// value will be replaced with "sensitive".
7087func (s LoadBalancer) GoString() string {
7088	return s.String()
7089}
7090
7091// SetAvailabilityZones sets the AvailabilityZones field's value.
7092func (s *LoadBalancer) SetAvailabilityZones(v []*AvailabilityZone) *LoadBalancer {
7093	s.AvailabilityZones = v
7094	return s
7095}
7096
7097// SetCanonicalHostedZoneId sets the CanonicalHostedZoneId field's value.
7098func (s *LoadBalancer) SetCanonicalHostedZoneId(v string) *LoadBalancer {
7099	s.CanonicalHostedZoneId = &v
7100	return s
7101}
7102
7103// SetCreatedTime sets the CreatedTime field's value.
7104func (s *LoadBalancer) SetCreatedTime(v time.Time) *LoadBalancer {
7105	s.CreatedTime = &v
7106	return s
7107}
7108
7109// SetCustomerOwnedIpv4Pool sets the CustomerOwnedIpv4Pool field's value.
7110func (s *LoadBalancer) SetCustomerOwnedIpv4Pool(v string) *LoadBalancer {
7111	s.CustomerOwnedIpv4Pool = &v
7112	return s
7113}
7114
7115// SetDNSName sets the DNSName field's value.
7116func (s *LoadBalancer) SetDNSName(v string) *LoadBalancer {
7117	s.DNSName = &v
7118	return s
7119}
7120
7121// SetIpAddressType sets the IpAddressType field's value.
7122func (s *LoadBalancer) SetIpAddressType(v string) *LoadBalancer {
7123	s.IpAddressType = &v
7124	return s
7125}
7126
7127// SetLoadBalancerArn sets the LoadBalancerArn field's value.
7128func (s *LoadBalancer) SetLoadBalancerArn(v string) *LoadBalancer {
7129	s.LoadBalancerArn = &v
7130	return s
7131}
7132
7133// SetLoadBalancerName sets the LoadBalancerName field's value.
7134func (s *LoadBalancer) SetLoadBalancerName(v string) *LoadBalancer {
7135	s.LoadBalancerName = &v
7136	return s
7137}
7138
7139// SetScheme sets the Scheme field's value.
7140func (s *LoadBalancer) SetScheme(v string) *LoadBalancer {
7141	s.Scheme = &v
7142	return s
7143}
7144
7145// SetSecurityGroups sets the SecurityGroups field's value.
7146func (s *LoadBalancer) SetSecurityGroups(v []*string) *LoadBalancer {
7147	s.SecurityGroups = v
7148	return s
7149}
7150
7151// SetState sets the State field's value.
7152func (s *LoadBalancer) SetState(v *LoadBalancerState) *LoadBalancer {
7153	s.State = v
7154	return s
7155}
7156
7157// SetType sets the Type field's value.
7158func (s *LoadBalancer) SetType(v string) *LoadBalancer {
7159	s.Type = &v
7160	return s
7161}
7162
7163// SetVpcId sets the VpcId field's value.
7164func (s *LoadBalancer) SetVpcId(v string) *LoadBalancer {
7165	s.VpcId = &v
7166	return s
7167}
7168
7169// Information about a static IP address for a load balancer.
7170type LoadBalancerAddress struct {
7171	_ struct{} `type:"structure"`
7172
7173	// [Network Load Balancers] The allocation ID of the Elastic IP address for
7174	// an internal-facing load balancer.
7175	AllocationId *string `type:"string"`
7176
7177	// [Network Load Balancers] The IPv6 address.
7178	IPv6Address *string `type:"string"`
7179
7180	// The static IP address.
7181	IpAddress *string `type:"string"`
7182
7183	// [Network Load Balancers] The private IPv4 address for an internal load balancer.
7184	PrivateIPv4Address *string `type:"string"`
7185}
7186
7187// String returns the string representation.
7188//
7189// API parameter values that are decorated as "sensitive" in the API will not
7190// be included in the string output. The member name will be present, but the
7191// value will be replaced with "sensitive".
7192func (s LoadBalancerAddress) String() string {
7193	return awsutil.Prettify(s)
7194}
7195
7196// GoString returns the string representation.
7197//
7198// API parameter values that are decorated as "sensitive" in the API will not
7199// be included in the string output. The member name will be present, but the
7200// value will be replaced with "sensitive".
7201func (s LoadBalancerAddress) GoString() string {
7202	return s.String()
7203}
7204
7205// SetAllocationId sets the AllocationId field's value.
7206func (s *LoadBalancerAddress) SetAllocationId(v string) *LoadBalancerAddress {
7207	s.AllocationId = &v
7208	return s
7209}
7210
7211// SetIPv6Address sets the IPv6Address field's value.
7212func (s *LoadBalancerAddress) SetIPv6Address(v string) *LoadBalancerAddress {
7213	s.IPv6Address = &v
7214	return s
7215}
7216
7217// SetIpAddress sets the IpAddress field's value.
7218func (s *LoadBalancerAddress) SetIpAddress(v string) *LoadBalancerAddress {
7219	s.IpAddress = &v
7220	return s
7221}
7222
7223// SetPrivateIPv4Address sets the PrivateIPv4Address field's value.
7224func (s *LoadBalancerAddress) SetPrivateIPv4Address(v string) *LoadBalancerAddress {
7225	s.PrivateIPv4Address = &v
7226	return s
7227}
7228
7229// Information about a load balancer attribute.
7230type LoadBalancerAttribute struct {
7231	_ struct{} `type:"structure"`
7232
7233	// The name of the attribute.
7234	//
7235	// The following attribute is supported by all load balancers:
7236	//
7237	//    * deletion_protection.enabled - Indicates whether deletion protection
7238	//    is enabled. The value is true or false. The default is false.
7239	//
7240	// The following attributes are supported by both Application Load Balancers
7241	// and Network Load Balancers:
7242	//
7243	//    * access_logs.s3.enabled - Indicates whether access logs are enabled.
7244	//    The value is true or false. The default is false.
7245	//
7246	//    * access_logs.s3.bucket - The name of the S3 bucket for the access logs.
7247	//    This attribute is required if access logs are enabled. The bucket must
7248	//    exist in the same region as the load balancer and have a bucket policy
7249	//    that grants Elastic Load Balancing permissions to write to the bucket.
7250	//
7251	//    * access_logs.s3.prefix - The prefix for the location in the S3 bucket
7252	//    for the access logs.
7253	//
7254	// The following attributes are supported by only Application Load Balancers:
7255	//
7256	//    * idle_timeout.timeout_seconds - The idle timeout value, in seconds. The
7257	//    valid range is 1-4000 seconds. The default is 60 seconds.
7258	//
7259	//    * routing.http.desync_mitigation_mode - Determines how the load balancer
7260	//    handles requests that might pose a security risk to your application.
7261	//    The possible values are monitor, defensive, and strictest. The default
7262	//    is defensive.
7263	//
7264	//    * routing.http.drop_invalid_header_fields.enabled - Indicates whether
7265	//    HTTP headers with invalid header fields are removed by the load balancer
7266	//    (true) or routed to targets (false). The default is false.
7267	//
7268	//    * routing.http.x_amzn_tls_version_and_cipher_suite.enabled - Indicates
7269	//    whether the two headers (x-amzn-tls-version and x-amzn-tls-cipher-suite),
7270	//    which contain information about the negotiated TLS version and cipher
7271	//    suite, are added to the client request before sending it to the target.
7272	//    The x-amzn-tls-version header has information about the TLS protocol version
7273	//    negotiated with the client, and the x-amzn-tls-cipher-suite header has
7274	//    information about the cipher suite negotiated with the client. Both headers
7275	//    are in OpenSSL format. The possible values for the attribute are true
7276	//    and false. The default is false.
7277	//
7278	//    * routing.http.xff_client_port.enabled - Indicates whether the X-Forwarded-For
7279	//    header should preserve the source port that the client used to connect
7280	//    to the load balancer. The possible values are true and false. The default
7281	//    is false.
7282	//
7283	//    * routing.http2.enabled - Indicates whether HTTP/2 is enabled. The possible
7284	//    values are true and false. The default is true. Elastic Load Balancing
7285	//    requires that message header names contain only alphanumeric characters
7286	//    and hyphens.
7287	//
7288	//    * waf.fail_open.enabled - Indicates whether to allow a WAF-enabled load
7289	//    balancer to route requests to targets if it is unable to forward the request
7290	//    to Amazon Web Services WAF. The possible values are true and false. The
7291	//    default is false.
7292	//
7293	// The following attribute is supported by Network Load Balancers and Gateway
7294	// Load Balancers:
7295	//
7296	//    * load_balancing.cross_zone.enabled - Indicates whether cross-zone load
7297	//    balancing is enabled. The possible values are true and false. The default
7298	//    is false.
7299	Key *string `type:"string"`
7300
7301	// The value of the attribute.
7302	Value *string `type:"string"`
7303}
7304
7305// String returns the string representation.
7306//
7307// API parameter values that are decorated as "sensitive" in the API will not
7308// be included in the string output. The member name will be present, but the
7309// value will be replaced with "sensitive".
7310func (s LoadBalancerAttribute) String() string {
7311	return awsutil.Prettify(s)
7312}
7313
7314// GoString returns the string representation.
7315//
7316// API parameter values that are decorated as "sensitive" in the API will not
7317// be included in the string output. The member name will be present, but the
7318// value will be replaced with "sensitive".
7319func (s LoadBalancerAttribute) GoString() string {
7320	return s.String()
7321}
7322
7323// SetKey sets the Key field's value.
7324func (s *LoadBalancerAttribute) SetKey(v string) *LoadBalancerAttribute {
7325	s.Key = &v
7326	return s
7327}
7328
7329// SetValue sets the Value field's value.
7330func (s *LoadBalancerAttribute) SetValue(v string) *LoadBalancerAttribute {
7331	s.Value = &v
7332	return s
7333}
7334
7335// Information about the state of the load balancer.
7336type LoadBalancerState struct {
7337	_ struct{} `type:"structure"`
7338
7339	// The state code. The initial state of the load balancer is provisioning. After
7340	// the load balancer is fully set up and ready to route traffic, its state is
7341	// active. If load balancer is routing traffic but does not have the resources
7342	// it needs to scale, its state isactive_impaired. If the load balancer could
7343	// not be set up, its state is failed.
7344	Code *string `type:"string" enum:"LoadBalancerStateEnum"`
7345
7346	// A description of the state.
7347	Reason *string `type:"string"`
7348}
7349
7350// String returns the string representation.
7351//
7352// API parameter values that are decorated as "sensitive" in the API will not
7353// be included in the string output. The member name will be present, but the
7354// value will be replaced with "sensitive".
7355func (s LoadBalancerState) String() string {
7356	return awsutil.Prettify(s)
7357}
7358
7359// GoString returns the string representation.
7360//
7361// API parameter values that are decorated as "sensitive" in the API will not
7362// be included in the string output. The member name will be present, but the
7363// value will be replaced with "sensitive".
7364func (s LoadBalancerState) GoString() string {
7365	return s.String()
7366}
7367
7368// SetCode sets the Code field's value.
7369func (s *LoadBalancerState) SetCode(v string) *LoadBalancerState {
7370	s.Code = &v
7371	return s
7372}
7373
7374// SetReason sets the Reason field's value.
7375func (s *LoadBalancerState) SetReason(v string) *LoadBalancerState {
7376	s.Reason = &v
7377	return s
7378}
7379
7380// The codes to use when checking for a successful response from a target. If
7381// the protocol version is gRPC, these are gRPC codes. Otherwise, these are
7382// HTTP codes.
7383type Matcher struct {
7384	_ struct{} `type:"structure"`
7385
7386	// You can specify values between 0 and 99. You can specify multiple values
7387	// (for example, "0,1") or a range of values (for example, "0-5"). The default
7388	// value is 12.
7389	GrpcCode *string `type:"string"`
7390
7391	// For Application Load Balancers, you can specify values between 200 and 499,
7392	// and the default value is 200. You can specify multiple values (for example,
7393	// "200,202") or a range of values (for example, "200-299").
7394	//
7395	// For Network Load Balancers and Gateway Load Balancers, this must be "200–399".
7396	//
7397	// Note that when using shorthand syntax, some values such as commas need to
7398	// be escaped.
7399	HttpCode *string `type:"string"`
7400}
7401
7402// String returns the string representation.
7403//
7404// API parameter values that are decorated as "sensitive" in the API will not
7405// be included in the string output. The member name will be present, but the
7406// value will be replaced with "sensitive".
7407func (s Matcher) String() string {
7408	return awsutil.Prettify(s)
7409}
7410
7411// GoString returns the string representation.
7412//
7413// API parameter values that are decorated as "sensitive" in the API will not
7414// be included in the string output. The member name will be present, but the
7415// value will be replaced with "sensitive".
7416func (s Matcher) GoString() string {
7417	return s.String()
7418}
7419
7420// SetGrpcCode sets the GrpcCode field's value.
7421func (s *Matcher) SetGrpcCode(v string) *Matcher {
7422	s.GrpcCode = &v
7423	return s
7424}
7425
7426// SetHttpCode sets the HttpCode field's value.
7427func (s *Matcher) SetHttpCode(v string) *Matcher {
7428	s.HttpCode = &v
7429	return s
7430}
7431
7432type ModifyListenerInput struct {
7433	_ struct{} `type:"structure"`
7434
7435	// [TLS listeners] The name of the Application-Layer Protocol Negotiation (ALPN)
7436	// policy. You can specify one policy name. The following are the possible values:
7437	//
7438	//    * HTTP1Only
7439	//
7440	//    * HTTP2Only
7441	//
7442	//    * HTTP2Optional
7443	//
7444	//    * HTTP2Preferred
7445	//
7446	//    * None
7447	//
7448	// For more information, see ALPN policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#alpn-policies)
7449	// in the Network Load Balancers Guide.
7450	AlpnPolicy []*string `type:"list"`
7451
7452	// [HTTPS and TLS listeners] The default certificate for the listener. You must
7453	// provide exactly one certificate. Set CertificateArn to the certificate ARN
7454	// but do not set IsDefault.
7455	Certificates []*Certificate `type:"list"`
7456
7457	// The actions for the default rule.
7458	DefaultActions []*Action `type:"list"`
7459
7460	// The Amazon Resource Name (ARN) of the listener.
7461	//
7462	// ListenerArn is a required field
7463	ListenerArn *string `type:"string" required:"true"`
7464
7465	// The port for connections from clients to the load balancer. You cannot specify
7466	// a port for a Gateway Load Balancer.
7467	Port *int64 `min:"1" type:"integer"`
7468
7469	// The protocol for connections from clients to the load balancer. Application
7470	// Load Balancers support the HTTP and HTTPS protocols. Network Load Balancers
7471	// support the TCP, TLS, UDP, and TCP_UDP protocols. You can’t change the
7472	// protocol to UDP or TCP_UDP if dual-stack mode is enabled. You cannot specify
7473	// a protocol for a Gateway Load Balancer.
7474	Protocol *string `type:"string" enum:"ProtocolEnum"`
7475
7476	// [HTTPS and TLS listeners] The security policy that defines which protocols
7477	// and ciphers are supported.
7478	//
7479	// For more information, see Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies)
7480	// in the Application Load Balancers Guide or Security policies (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-tls-listener.html#describe-ssl-policies)
7481	// in the Network Load Balancers Guide.
7482	SslPolicy *string `type:"string"`
7483}
7484
7485// String returns the string representation.
7486//
7487// API parameter values that are decorated as "sensitive" in the API will not
7488// be included in the string output. The member name will be present, but the
7489// value will be replaced with "sensitive".
7490func (s ModifyListenerInput) String() string {
7491	return awsutil.Prettify(s)
7492}
7493
7494// GoString returns the string representation.
7495//
7496// API parameter values that are decorated as "sensitive" in the API will not
7497// be included in the string output. The member name will be present, but the
7498// value will be replaced with "sensitive".
7499func (s ModifyListenerInput) GoString() string {
7500	return s.String()
7501}
7502
7503// Validate inspects the fields of the type to determine if they are valid.
7504func (s *ModifyListenerInput) Validate() error {
7505	invalidParams := request.ErrInvalidParams{Context: "ModifyListenerInput"}
7506	if s.ListenerArn == nil {
7507		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
7508	}
7509	if s.Port != nil && *s.Port < 1 {
7510		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
7511	}
7512	if s.DefaultActions != nil {
7513		for i, v := range s.DefaultActions {
7514			if v == nil {
7515				continue
7516			}
7517			if err := v.Validate(); err != nil {
7518				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "DefaultActions", i), err.(request.ErrInvalidParams))
7519			}
7520		}
7521	}
7522
7523	if invalidParams.Len() > 0 {
7524		return invalidParams
7525	}
7526	return nil
7527}
7528
7529// SetAlpnPolicy sets the AlpnPolicy field's value.
7530func (s *ModifyListenerInput) SetAlpnPolicy(v []*string) *ModifyListenerInput {
7531	s.AlpnPolicy = v
7532	return s
7533}
7534
7535// SetCertificates sets the Certificates field's value.
7536func (s *ModifyListenerInput) SetCertificates(v []*Certificate) *ModifyListenerInput {
7537	s.Certificates = v
7538	return s
7539}
7540
7541// SetDefaultActions sets the DefaultActions field's value.
7542func (s *ModifyListenerInput) SetDefaultActions(v []*Action) *ModifyListenerInput {
7543	s.DefaultActions = v
7544	return s
7545}
7546
7547// SetListenerArn sets the ListenerArn field's value.
7548func (s *ModifyListenerInput) SetListenerArn(v string) *ModifyListenerInput {
7549	s.ListenerArn = &v
7550	return s
7551}
7552
7553// SetPort sets the Port field's value.
7554func (s *ModifyListenerInput) SetPort(v int64) *ModifyListenerInput {
7555	s.Port = &v
7556	return s
7557}
7558
7559// SetProtocol sets the Protocol field's value.
7560func (s *ModifyListenerInput) SetProtocol(v string) *ModifyListenerInput {
7561	s.Protocol = &v
7562	return s
7563}
7564
7565// SetSslPolicy sets the SslPolicy field's value.
7566func (s *ModifyListenerInput) SetSslPolicy(v string) *ModifyListenerInput {
7567	s.SslPolicy = &v
7568	return s
7569}
7570
7571type ModifyListenerOutput struct {
7572	_ struct{} `type:"structure"`
7573
7574	// Information about the modified listener.
7575	Listeners []*Listener `type:"list"`
7576}
7577
7578// String returns the string representation.
7579//
7580// API parameter values that are decorated as "sensitive" in the API will not
7581// be included in the string output. The member name will be present, but the
7582// value will be replaced with "sensitive".
7583func (s ModifyListenerOutput) String() string {
7584	return awsutil.Prettify(s)
7585}
7586
7587// GoString returns the string representation.
7588//
7589// API parameter values that are decorated as "sensitive" in the API will not
7590// be included in the string output. The member name will be present, but the
7591// value will be replaced with "sensitive".
7592func (s ModifyListenerOutput) GoString() string {
7593	return s.String()
7594}
7595
7596// SetListeners sets the Listeners field's value.
7597func (s *ModifyListenerOutput) SetListeners(v []*Listener) *ModifyListenerOutput {
7598	s.Listeners = v
7599	return s
7600}
7601
7602type ModifyLoadBalancerAttributesInput struct {
7603	_ struct{} `type:"structure"`
7604
7605	// The load balancer attributes.
7606	//
7607	// Attributes is a required field
7608	Attributes []*LoadBalancerAttribute `type:"list" required:"true"`
7609
7610	// The Amazon Resource Name (ARN) of the load balancer.
7611	//
7612	// LoadBalancerArn is a required field
7613	LoadBalancerArn *string `type:"string" required:"true"`
7614}
7615
7616// String returns the string representation.
7617//
7618// API parameter values that are decorated as "sensitive" in the API will not
7619// be included in the string output. The member name will be present, but the
7620// value will be replaced with "sensitive".
7621func (s ModifyLoadBalancerAttributesInput) String() string {
7622	return awsutil.Prettify(s)
7623}
7624
7625// GoString returns the string representation.
7626//
7627// API parameter values that are decorated as "sensitive" in the API will not
7628// be included in the string output. The member name will be present, but the
7629// value will be replaced with "sensitive".
7630func (s ModifyLoadBalancerAttributesInput) GoString() string {
7631	return s.String()
7632}
7633
7634// Validate inspects the fields of the type to determine if they are valid.
7635func (s *ModifyLoadBalancerAttributesInput) Validate() error {
7636	invalidParams := request.ErrInvalidParams{Context: "ModifyLoadBalancerAttributesInput"}
7637	if s.Attributes == nil {
7638		invalidParams.Add(request.NewErrParamRequired("Attributes"))
7639	}
7640	if s.LoadBalancerArn == nil {
7641		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
7642	}
7643
7644	if invalidParams.Len() > 0 {
7645		return invalidParams
7646	}
7647	return nil
7648}
7649
7650// SetAttributes sets the Attributes field's value.
7651func (s *ModifyLoadBalancerAttributesInput) SetAttributes(v []*LoadBalancerAttribute) *ModifyLoadBalancerAttributesInput {
7652	s.Attributes = v
7653	return s
7654}
7655
7656// SetLoadBalancerArn sets the LoadBalancerArn field's value.
7657func (s *ModifyLoadBalancerAttributesInput) SetLoadBalancerArn(v string) *ModifyLoadBalancerAttributesInput {
7658	s.LoadBalancerArn = &v
7659	return s
7660}
7661
7662type ModifyLoadBalancerAttributesOutput struct {
7663	_ struct{} `type:"structure"`
7664
7665	// Information about the load balancer attributes.
7666	Attributes []*LoadBalancerAttribute `type:"list"`
7667}
7668
7669// String returns the string representation.
7670//
7671// API parameter values that are decorated as "sensitive" in the API will not
7672// be included in the string output. The member name will be present, but the
7673// value will be replaced with "sensitive".
7674func (s ModifyLoadBalancerAttributesOutput) String() string {
7675	return awsutil.Prettify(s)
7676}
7677
7678// GoString returns the string representation.
7679//
7680// API parameter values that are decorated as "sensitive" in the API will not
7681// be included in the string output. The member name will be present, but the
7682// value will be replaced with "sensitive".
7683func (s ModifyLoadBalancerAttributesOutput) GoString() string {
7684	return s.String()
7685}
7686
7687// SetAttributes sets the Attributes field's value.
7688func (s *ModifyLoadBalancerAttributesOutput) SetAttributes(v []*LoadBalancerAttribute) *ModifyLoadBalancerAttributesOutput {
7689	s.Attributes = v
7690	return s
7691}
7692
7693type ModifyRuleInput struct {
7694	_ struct{} `type:"structure"`
7695
7696	// The actions.
7697	Actions []*Action `type:"list"`
7698
7699	// The conditions.
7700	Conditions []*RuleCondition `type:"list"`
7701
7702	// The Amazon Resource Name (ARN) of the rule.
7703	//
7704	// RuleArn is a required field
7705	RuleArn *string `type:"string" required:"true"`
7706}
7707
7708// String returns the string representation.
7709//
7710// API parameter values that are decorated as "sensitive" in the API will not
7711// be included in the string output. The member name will be present, but the
7712// value will be replaced with "sensitive".
7713func (s ModifyRuleInput) String() string {
7714	return awsutil.Prettify(s)
7715}
7716
7717// GoString returns the string representation.
7718//
7719// API parameter values that are decorated as "sensitive" in the API will not
7720// be included in the string output. The member name will be present, but the
7721// value will be replaced with "sensitive".
7722func (s ModifyRuleInput) GoString() string {
7723	return s.String()
7724}
7725
7726// Validate inspects the fields of the type to determine if they are valid.
7727func (s *ModifyRuleInput) Validate() error {
7728	invalidParams := request.ErrInvalidParams{Context: "ModifyRuleInput"}
7729	if s.RuleArn == nil {
7730		invalidParams.Add(request.NewErrParamRequired("RuleArn"))
7731	}
7732	if s.Actions != nil {
7733		for i, v := range s.Actions {
7734			if v == nil {
7735				continue
7736			}
7737			if err := v.Validate(); err != nil {
7738				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Actions", i), err.(request.ErrInvalidParams))
7739			}
7740		}
7741	}
7742
7743	if invalidParams.Len() > 0 {
7744		return invalidParams
7745	}
7746	return nil
7747}
7748
7749// SetActions sets the Actions field's value.
7750func (s *ModifyRuleInput) SetActions(v []*Action) *ModifyRuleInput {
7751	s.Actions = v
7752	return s
7753}
7754
7755// SetConditions sets the Conditions field's value.
7756func (s *ModifyRuleInput) SetConditions(v []*RuleCondition) *ModifyRuleInput {
7757	s.Conditions = v
7758	return s
7759}
7760
7761// SetRuleArn sets the RuleArn field's value.
7762func (s *ModifyRuleInput) SetRuleArn(v string) *ModifyRuleInput {
7763	s.RuleArn = &v
7764	return s
7765}
7766
7767type ModifyRuleOutput struct {
7768	_ struct{} `type:"structure"`
7769
7770	// Information about the modified rule.
7771	Rules []*Rule `type:"list"`
7772}
7773
7774// String returns the string representation.
7775//
7776// API parameter values that are decorated as "sensitive" in the API will not
7777// be included in the string output. The member name will be present, but the
7778// value will be replaced with "sensitive".
7779func (s ModifyRuleOutput) String() string {
7780	return awsutil.Prettify(s)
7781}
7782
7783// GoString returns the string representation.
7784//
7785// API parameter values that are decorated as "sensitive" in the API will not
7786// be included in the string output. The member name will be present, but the
7787// value will be replaced with "sensitive".
7788func (s ModifyRuleOutput) GoString() string {
7789	return s.String()
7790}
7791
7792// SetRules sets the Rules field's value.
7793func (s *ModifyRuleOutput) SetRules(v []*Rule) *ModifyRuleOutput {
7794	s.Rules = v
7795	return s
7796}
7797
7798type ModifyTargetGroupAttributesInput struct {
7799	_ struct{} `type:"structure"`
7800
7801	// The attributes.
7802	//
7803	// Attributes is a required field
7804	Attributes []*TargetGroupAttribute `type:"list" required:"true"`
7805
7806	// The Amazon Resource Name (ARN) of the target group.
7807	//
7808	// TargetGroupArn is a required field
7809	TargetGroupArn *string `type:"string" required:"true"`
7810}
7811
7812// String returns the string representation.
7813//
7814// API parameter values that are decorated as "sensitive" in the API will not
7815// be included in the string output. The member name will be present, but the
7816// value will be replaced with "sensitive".
7817func (s ModifyTargetGroupAttributesInput) String() string {
7818	return awsutil.Prettify(s)
7819}
7820
7821// GoString returns the string representation.
7822//
7823// API parameter values that are decorated as "sensitive" in the API will not
7824// be included in the string output. The member name will be present, but the
7825// value will be replaced with "sensitive".
7826func (s ModifyTargetGroupAttributesInput) GoString() string {
7827	return s.String()
7828}
7829
7830// Validate inspects the fields of the type to determine if they are valid.
7831func (s *ModifyTargetGroupAttributesInput) Validate() error {
7832	invalidParams := request.ErrInvalidParams{Context: "ModifyTargetGroupAttributesInput"}
7833	if s.Attributes == nil {
7834		invalidParams.Add(request.NewErrParamRequired("Attributes"))
7835	}
7836	if s.TargetGroupArn == nil {
7837		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
7838	}
7839
7840	if invalidParams.Len() > 0 {
7841		return invalidParams
7842	}
7843	return nil
7844}
7845
7846// SetAttributes sets the Attributes field's value.
7847func (s *ModifyTargetGroupAttributesInput) SetAttributes(v []*TargetGroupAttribute) *ModifyTargetGroupAttributesInput {
7848	s.Attributes = v
7849	return s
7850}
7851
7852// SetTargetGroupArn sets the TargetGroupArn field's value.
7853func (s *ModifyTargetGroupAttributesInput) SetTargetGroupArn(v string) *ModifyTargetGroupAttributesInput {
7854	s.TargetGroupArn = &v
7855	return s
7856}
7857
7858type ModifyTargetGroupAttributesOutput struct {
7859	_ struct{} `type:"structure"`
7860
7861	// Information about the attributes.
7862	Attributes []*TargetGroupAttribute `type:"list"`
7863}
7864
7865// String returns the string representation.
7866//
7867// API parameter values that are decorated as "sensitive" in the API will not
7868// be included in the string output. The member name will be present, but the
7869// value will be replaced with "sensitive".
7870func (s ModifyTargetGroupAttributesOutput) String() string {
7871	return awsutil.Prettify(s)
7872}
7873
7874// GoString returns the string representation.
7875//
7876// API parameter values that are decorated as "sensitive" in the API will not
7877// be included in the string output. The member name will be present, but the
7878// value will be replaced with "sensitive".
7879func (s ModifyTargetGroupAttributesOutput) GoString() string {
7880	return s.String()
7881}
7882
7883// SetAttributes sets the Attributes field's value.
7884func (s *ModifyTargetGroupAttributesOutput) SetAttributes(v []*TargetGroupAttribute) *ModifyTargetGroupAttributesOutput {
7885	s.Attributes = v
7886	return s
7887}
7888
7889type ModifyTargetGroupInput struct {
7890	_ struct{} `type:"structure"`
7891
7892	// Indicates whether health checks are enabled.
7893	HealthCheckEnabled *bool `type:"boolean"`
7894
7895	// The approximate amount of time, in seconds, between health checks of an individual
7896	// target. For TCP health checks, the supported values are 10 or 30 seconds.
7897	//
7898	// With Network Load Balancers, you can't modify this setting.
7899	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
7900
7901	// [HTTP/HTTPS health checks] The destination for health checks on the targets.
7902	//
7903	// [HTTP1 or HTTP2 protocol version] The ping path. The default is /.
7904	//
7905	// [GRPC protocol version] The path of a custom health check method with the
7906	// format /package.service/method. The default is /Amazon Web Services.ALB/healthcheck.
7907	HealthCheckPath *string `min:"1" type:"string"`
7908
7909	// The port the load balancer uses when performing health checks on targets.
7910	HealthCheckPort *string `type:"string"`
7911
7912	// The protocol the load balancer uses when performing health checks on targets.
7913	// For Application Load Balancers, the default is HTTP. For Network Load Balancers
7914	// and Gateway Load Balancers, the default is TCP. The TCP protocol is not supported
7915	// for health checks if the protocol of the target group is HTTP or HTTPS. It
7916	// is supported for health checks only if the protocol of the target group is
7917	// TCP, TLS, UDP, or TCP_UDP. The GENEVE, TLS, UDP, and TCP_UDP protocols are
7918	// not supported for health checks.
7919	//
7920	// With Network Load Balancers, you can't modify this setting.
7921	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
7922
7923	// [HTTP/HTTPS health checks] The amount of time, in seconds, during which no
7924	// response means a failed health check.
7925	//
7926	// With Network Load Balancers, you can't modify this setting.
7927	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
7928
7929	// The number of consecutive health checks successes required before considering
7930	// an unhealthy target healthy.
7931	HealthyThresholdCount *int64 `min:"2" type:"integer"`
7932
7933	// [HTTP/HTTPS health checks] The HTTP or gRPC codes to use when checking for
7934	// a successful response from a target.
7935	//
7936	// With Network Load Balancers, you can't modify this setting.
7937	Matcher *Matcher `type:"structure"`
7938
7939	// The Amazon Resource Name (ARN) of the target group.
7940	//
7941	// TargetGroupArn is a required field
7942	TargetGroupArn *string `type:"string" required:"true"`
7943
7944	// The number of consecutive health check failures required before considering
7945	// the target unhealthy. For target groups with a protocol of TCP or TLS, this
7946	// value must be the same as the healthy threshold count.
7947	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
7948}
7949
7950// String returns the string representation.
7951//
7952// API parameter values that are decorated as "sensitive" in the API will not
7953// be included in the string output. The member name will be present, but the
7954// value will be replaced with "sensitive".
7955func (s ModifyTargetGroupInput) String() string {
7956	return awsutil.Prettify(s)
7957}
7958
7959// GoString returns the string representation.
7960//
7961// API parameter values that are decorated as "sensitive" in the API will not
7962// be included in the string output. The member name will be present, but the
7963// value will be replaced with "sensitive".
7964func (s ModifyTargetGroupInput) GoString() string {
7965	return s.String()
7966}
7967
7968// Validate inspects the fields of the type to determine if they are valid.
7969func (s *ModifyTargetGroupInput) Validate() error {
7970	invalidParams := request.ErrInvalidParams{Context: "ModifyTargetGroupInput"}
7971	if s.HealthCheckIntervalSeconds != nil && *s.HealthCheckIntervalSeconds < 5 {
7972		invalidParams.Add(request.NewErrParamMinValue("HealthCheckIntervalSeconds", 5))
7973	}
7974	if s.HealthCheckPath != nil && len(*s.HealthCheckPath) < 1 {
7975		invalidParams.Add(request.NewErrParamMinLen("HealthCheckPath", 1))
7976	}
7977	if s.HealthCheckTimeoutSeconds != nil && *s.HealthCheckTimeoutSeconds < 2 {
7978		invalidParams.Add(request.NewErrParamMinValue("HealthCheckTimeoutSeconds", 2))
7979	}
7980	if s.HealthyThresholdCount != nil && *s.HealthyThresholdCount < 2 {
7981		invalidParams.Add(request.NewErrParamMinValue("HealthyThresholdCount", 2))
7982	}
7983	if s.TargetGroupArn == nil {
7984		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
7985	}
7986	if s.UnhealthyThresholdCount != nil && *s.UnhealthyThresholdCount < 2 {
7987		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThresholdCount", 2))
7988	}
7989
7990	if invalidParams.Len() > 0 {
7991		return invalidParams
7992	}
7993	return nil
7994}
7995
7996// SetHealthCheckEnabled sets the HealthCheckEnabled field's value.
7997func (s *ModifyTargetGroupInput) SetHealthCheckEnabled(v bool) *ModifyTargetGroupInput {
7998	s.HealthCheckEnabled = &v
7999	return s
8000}
8001
8002// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
8003func (s *ModifyTargetGroupInput) SetHealthCheckIntervalSeconds(v int64) *ModifyTargetGroupInput {
8004	s.HealthCheckIntervalSeconds = &v
8005	return s
8006}
8007
8008// SetHealthCheckPath sets the HealthCheckPath field's value.
8009func (s *ModifyTargetGroupInput) SetHealthCheckPath(v string) *ModifyTargetGroupInput {
8010	s.HealthCheckPath = &v
8011	return s
8012}
8013
8014// SetHealthCheckPort sets the HealthCheckPort field's value.
8015func (s *ModifyTargetGroupInput) SetHealthCheckPort(v string) *ModifyTargetGroupInput {
8016	s.HealthCheckPort = &v
8017	return s
8018}
8019
8020// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
8021func (s *ModifyTargetGroupInput) SetHealthCheckProtocol(v string) *ModifyTargetGroupInput {
8022	s.HealthCheckProtocol = &v
8023	return s
8024}
8025
8026// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
8027func (s *ModifyTargetGroupInput) SetHealthCheckTimeoutSeconds(v int64) *ModifyTargetGroupInput {
8028	s.HealthCheckTimeoutSeconds = &v
8029	return s
8030}
8031
8032// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
8033func (s *ModifyTargetGroupInput) SetHealthyThresholdCount(v int64) *ModifyTargetGroupInput {
8034	s.HealthyThresholdCount = &v
8035	return s
8036}
8037
8038// SetMatcher sets the Matcher field's value.
8039func (s *ModifyTargetGroupInput) SetMatcher(v *Matcher) *ModifyTargetGroupInput {
8040	s.Matcher = v
8041	return s
8042}
8043
8044// SetTargetGroupArn sets the TargetGroupArn field's value.
8045func (s *ModifyTargetGroupInput) SetTargetGroupArn(v string) *ModifyTargetGroupInput {
8046	s.TargetGroupArn = &v
8047	return s
8048}
8049
8050// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
8051func (s *ModifyTargetGroupInput) SetUnhealthyThresholdCount(v int64) *ModifyTargetGroupInput {
8052	s.UnhealthyThresholdCount = &v
8053	return s
8054}
8055
8056type ModifyTargetGroupOutput struct {
8057	_ struct{} `type:"structure"`
8058
8059	// Information about the modified target group.
8060	TargetGroups []*TargetGroup `type:"list"`
8061}
8062
8063// String returns the string representation.
8064//
8065// API parameter values that are decorated as "sensitive" in the API will not
8066// be included in the string output. The member name will be present, but the
8067// value will be replaced with "sensitive".
8068func (s ModifyTargetGroupOutput) String() string {
8069	return awsutil.Prettify(s)
8070}
8071
8072// GoString returns the string representation.
8073//
8074// API parameter values that are decorated as "sensitive" in the API will not
8075// be included in the string output. The member name will be present, but the
8076// value will be replaced with "sensitive".
8077func (s ModifyTargetGroupOutput) GoString() string {
8078	return s.String()
8079}
8080
8081// SetTargetGroups sets the TargetGroups field's value.
8082func (s *ModifyTargetGroupOutput) SetTargetGroups(v []*TargetGroup) *ModifyTargetGroupOutput {
8083	s.TargetGroups = v
8084	return s
8085}
8086
8087// Information about a path pattern condition.
8088type PathPatternConditionConfig struct {
8089	_ struct{} `type:"structure"`
8090
8091	// One or more path patterns to compare against the request URL. The maximum
8092	// size of each string is 128 characters. The comparison is case sensitive.
8093	// The following wildcard characters are supported: * (matches 0 or more characters)
8094	// and ? (matches exactly 1 character).
8095	//
8096	// If you specify multiple strings, the condition is satisfied if one of them
8097	// matches the request URL. The path pattern is compared only to the path of
8098	// the URL, not to its query string. To compare against the query string, use
8099	// QueryStringConditionConfig.
8100	Values []*string `type:"list"`
8101}
8102
8103// String returns the string representation.
8104//
8105// API parameter values that are decorated as "sensitive" in the API will not
8106// be included in the string output. The member name will be present, but the
8107// value will be replaced with "sensitive".
8108func (s PathPatternConditionConfig) String() string {
8109	return awsutil.Prettify(s)
8110}
8111
8112// GoString returns the string representation.
8113//
8114// API parameter values that are decorated as "sensitive" in the API will not
8115// be included in the string output. The member name will be present, but the
8116// value will be replaced with "sensitive".
8117func (s PathPatternConditionConfig) GoString() string {
8118	return s.String()
8119}
8120
8121// SetValues sets the Values field's value.
8122func (s *PathPatternConditionConfig) SetValues(v []*string) *PathPatternConditionConfig {
8123	s.Values = v
8124	return s
8125}
8126
8127// Information about a query string condition.
8128//
8129// The query string component of a URI starts after the first '?' character
8130// and is terminated by either a '#' character or the end of the URI. A typical
8131// query string contains key/value pairs separated by '&' characters. The allowed
8132// characters are specified by RFC 3986. Any character can be percentage encoded.
8133type QueryStringConditionConfig struct {
8134	_ struct{} `type:"structure"`
8135
8136	// One or more key/value pairs or values to find in the query string. The maximum
8137	// size of each string is 128 characters. The comparison is case insensitive.
8138	// The following wildcard characters are supported: * (matches 0 or more characters)
8139	// and ? (matches exactly 1 character). To search for a literal '*' or '?' character
8140	// in a query string, you must escape these characters in Values using a '\'
8141	// character.
8142	//
8143	// If you specify multiple key/value pairs or values, the condition is satisfied
8144	// if one of them is found in the query string.
8145	Values []*QueryStringKeyValuePair `type:"list"`
8146}
8147
8148// String returns the string representation.
8149//
8150// API parameter values that are decorated as "sensitive" in the API will not
8151// be included in the string output. The member name will be present, but the
8152// value will be replaced with "sensitive".
8153func (s QueryStringConditionConfig) String() string {
8154	return awsutil.Prettify(s)
8155}
8156
8157// GoString returns the string representation.
8158//
8159// API parameter values that are decorated as "sensitive" in the API will not
8160// be included in the string output. The member name will be present, but the
8161// value will be replaced with "sensitive".
8162func (s QueryStringConditionConfig) GoString() string {
8163	return s.String()
8164}
8165
8166// SetValues sets the Values field's value.
8167func (s *QueryStringConditionConfig) SetValues(v []*QueryStringKeyValuePair) *QueryStringConditionConfig {
8168	s.Values = v
8169	return s
8170}
8171
8172// Information about a key/value pair.
8173type QueryStringKeyValuePair struct {
8174	_ struct{} `type:"structure"`
8175
8176	// The key. You can omit the key.
8177	Key *string `type:"string"`
8178
8179	// The value.
8180	Value *string `type:"string"`
8181}
8182
8183// String returns the string representation.
8184//
8185// API parameter values that are decorated as "sensitive" in the API will not
8186// be included in the string output. The member name will be present, but the
8187// value will be replaced with "sensitive".
8188func (s QueryStringKeyValuePair) String() string {
8189	return awsutil.Prettify(s)
8190}
8191
8192// GoString returns the string representation.
8193//
8194// API parameter values that are decorated as "sensitive" in the API will not
8195// be included in the string output. The member name will be present, but the
8196// value will be replaced with "sensitive".
8197func (s QueryStringKeyValuePair) GoString() string {
8198	return s.String()
8199}
8200
8201// SetKey sets the Key field's value.
8202func (s *QueryStringKeyValuePair) SetKey(v string) *QueryStringKeyValuePair {
8203	s.Key = &v
8204	return s
8205}
8206
8207// SetValue sets the Value field's value.
8208func (s *QueryStringKeyValuePair) SetValue(v string) *QueryStringKeyValuePair {
8209	s.Value = &v
8210	return s
8211}
8212
8213// Information about a redirect action.
8214//
8215// A URI consists of the following components: protocol://hostname:port/path?query.
8216// You must modify at least one of the following components to avoid a redirect
8217// loop: protocol, hostname, port, or path. Any components that you do not modify
8218// retain their original values.
8219//
8220// You can reuse URI components using the following reserved keywords:
8221//
8222//    * #{protocol}
8223//
8224//    * #{host}
8225//
8226//    * #{port}
8227//
8228//    * #{path} (the leading "/" is removed)
8229//
8230//    * #{query}
8231//
8232// For example, you can change the path to "/new/#{path}", the hostname to "example.#{host}",
8233// or the query to "#{query}&value=xyz".
8234type RedirectActionConfig struct {
8235	_ struct{} `type:"structure"`
8236
8237	// The hostname. This component is not percent-encoded. The hostname can contain
8238	// #{host}.
8239	Host *string `min:"1" type:"string"`
8240
8241	// The absolute path, starting with the leading "/". This component is not percent-encoded.
8242	// The path can contain #{host}, #{path}, and #{port}.
8243	Path *string `min:"1" type:"string"`
8244
8245	// The port. You can specify a value from 1 to 65535 or #{port}.
8246	Port *string `type:"string"`
8247
8248	// The protocol. You can specify HTTP, HTTPS, or #{protocol}. You can redirect
8249	// HTTP to HTTP, HTTP to HTTPS, and HTTPS to HTTPS. You cannot redirect HTTPS
8250	// to HTTP.
8251	Protocol *string `type:"string"`
8252
8253	// The query parameters, URL-encoded when necessary, but not percent-encoded.
8254	// Do not include the leading "?", as it is automatically added. You can specify
8255	// any of the reserved keywords.
8256	Query *string `type:"string"`
8257
8258	// The HTTP redirect code. The redirect is either permanent (HTTP 301) or temporary
8259	// (HTTP 302).
8260	//
8261	// StatusCode is a required field
8262	StatusCode *string `type:"string" required:"true" enum:"RedirectActionStatusCodeEnum"`
8263}
8264
8265// String returns the string representation.
8266//
8267// API parameter values that are decorated as "sensitive" in the API will not
8268// be included in the string output. The member name will be present, but the
8269// value will be replaced with "sensitive".
8270func (s RedirectActionConfig) String() string {
8271	return awsutil.Prettify(s)
8272}
8273
8274// GoString returns the string representation.
8275//
8276// API parameter values that are decorated as "sensitive" in the API will not
8277// be included in the string output. The member name will be present, but the
8278// value will be replaced with "sensitive".
8279func (s RedirectActionConfig) GoString() string {
8280	return s.String()
8281}
8282
8283// Validate inspects the fields of the type to determine if they are valid.
8284func (s *RedirectActionConfig) Validate() error {
8285	invalidParams := request.ErrInvalidParams{Context: "RedirectActionConfig"}
8286	if s.Host != nil && len(*s.Host) < 1 {
8287		invalidParams.Add(request.NewErrParamMinLen("Host", 1))
8288	}
8289	if s.Path != nil && len(*s.Path) < 1 {
8290		invalidParams.Add(request.NewErrParamMinLen("Path", 1))
8291	}
8292	if s.StatusCode == nil {
8293		invalidParams.Add(request.NewErrParamRequired("StatusCode"))
8294	}
8295
8296	if invalidParams.Len() > 0 {
8297		return invalidParams
8298	}
8299	return nil
8300}
8301
8302// SetHost sets the Host field's value.
8303func (s *RedirectActionConfig) SetHost(v string) *RedirectActionConfig {
8304	s.Host = &v
8305	return s
8306}
8307
8308// SetPath sets the Path field's value.
8309func (s *RedirectActionConfig) SetPath(v string) *RedirectActionConfig {
8310	s.Path = &v
8311	return s
8312}
8313
8314// SetPort sets the Port field's value.
8315func (s *RedirectActionConfig) SetPort(v string) *RedirectActionConfig {
8316	s.Port = &v
8317	return s
8318}
8319
8320// SetProtocol sets the Protocol field's value.
8321func (s *RedirectActionConfig) SetProtocol(v string) *RedirectActionConfig {
8322	s.Protocol = &v
8323	return s
8324}
8325
8326// SetQuery sets the Query field's value.
8327func (s *RedirectActionConfig) SetQuery(v string) *RedirectActionConfig {
8328	s.Query = &v
8329	return s
8330}
8331
8332// SetStatusCode sets the StatusCode field's value.
8333func (s *RedirectActionConfig) SetStatusCode(v string) *RedirectActionConfig {
8334	s.StatusCode = &v
8335	return s
8336}
8337
8338type RegisterTargetsInput struct {
8339	_ struct{} `type:"structure"`
8340
8341	// The Amazon Resource Name (ARN) of the target group.
8342	//
8343	// TargetGroupArn is a required field
8344	TargetGroupArn *string `type:"string" required:"true"`
8345
8346	// The targets.
8347	//
8348	// Targets is a required field
8349	Targets []*TargetDescription `type:"list" required:"true"`
8350}
8351
8352// String returns the string representation.
8353//
8354// API parameter values that are decorated as "sensitive" in the API will not
8355// be included in the string output. The member name will be present, but the
8356// value will be replaced with "sensitive".
8357func (s RegisterTargetsInput) String() string {
8358	return awsutil.Prettify(s)
8359}
8360
8361// GoString returns the string representation.
8362//
8363// API parameter values that are decorated as "sensitive" in the API will not
8364// be included in the string output. The member name will be present, but the
8365// value will be replaced with "sensitive".
8366func (s RegisterTargetsInput) GoString() string {
8367	return s.String()
8368}
8369
8370// Validate inspects the fields of the type to determine if they are valid.
8371func (s *RegisterTargetsInput) Validate() error {
8372	invalidParams := request.ErrInvalidParams{Context: "RegisterTargetsInput"}
8373	if s.TargetGroupArn == nil {
8374		invalidParams.Add(request.NewErrParamRequired("TargetGroupArn"))
8375	}
8376	if s.Targets == nil {
8377		invalidParams.Add(request.NewErrParamRequired("Targets"))
8378	}
8379	if s.Targets != nil {
8380		for i, v := range s.Targets {
8381			if v == nil {
8382				continue
8383			}
8384			if err := v.Validate(); err != nil {
8385				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Targets", i), err.(request.ErrInvalidParams))
8386			}
8387		}
8388	}
8389
8390	if invalidParams.Len() > 0 {
8391		return invalidParams
8392	}
8393	return nil
8394}
8395
8396// SetTargetGroupArn sets the TargetGroupArn field's value.
8397func (s *RegisterTargetsInput) SetTargetGroupArn(v string) *RegisterTargetsInput {
8398	s.TargetGroupArn = &v
8399	return s
8400}
8401
8402// SetTargets sets the Targets field's value.
8403func (s *RegisterTargetsInput) SetTargets(v []*TargetDescription) *RegisterTargetsInput {
8404	s.Targets = v
8405	return s
8406}
8407
8408type RegisterTargetsOutput struct {
8409	_ struct{} `type:"structure"`
8410}
8411
8412// String returns the string representation.
8413//
8414// API parameter values that are decorated as "sensitive" in the API will not
8415// be included in the string output. The member name will be present, but the
8416// value will be replaced with "sensitive".
8417func (s RegisterTargetsOutput) String() string {
8418	return awsutil.Prettify(s)
8419}
8420
8421// GoString returns the string representation.
8422//
8423// API parameter values that are decorated as "sensitive" in the API will not
8424// be included in the string output. The member name will be present, but the
8425// value will be replaced with "sensitive".
8426func (s RegisterTargetsOutput) GoString() string {
8427	return s.String()
8428}
8429
8430type RemoveListenerCertificatesInput struct {
8431	_ struct{} `type:"structure"`
8432
8433	// The certificate to remove. You can specify one certificate per call. Set
8434	// CertificateArn to the certificate ARN but do not set IsDefault.
8435	//
8436	// Certificates is a required field
8437	Certificates []*Certificate `type:"list" required:"true"`
8438
8439	// The Amazon Resource Name (ARN) of the listener.
8440	//
8441	// ListenerArn is a required field
8442	ListenerArn *string `type:"string" required:"true"`
8443}
8444
8445// String returns the string representation.
8446//
8447// API parameter values that are decorated as "sensitive" in the API will not
8448// be included in the string output. The member name will be present, but the
8449// value will be replaced with "sensitive".
8450func (s RemoveListenerCertificatesInput) String() string {
8451	return awsutil.Prettify(s)
8452}
8453
8454// GoString returns the string representation.
8455//
8456// API parameter values that are decorated as "sensitive" in the API will not
8457// be included in the string output. The member name will be present, but the
8458// value will be replaced with "sensitive".
8459func (s RemoveListenerCertificatesInput) GoString() string {
8460	return s.String()
8461}
8462
8463// Validate inspects the fields of the type to determine if they are valid.
8464func (s *RemoveListenerCertificatesInput) Validate() error {
8465	invalidParams := request.ErrInvalidParams{Context: "RemoveListenerCertificatesInput"}
8466	if s.Certificates == nil {
8467		invalidParams.Add(request.NewErrParamRequired("Certificates"))
8468	}
8469	if s.ListenerArn == nil {
8470		invalidParams.Add(request.NewErrParamRequired("ListenerArn"))
8471	}
8472
8473	if invalidParams.Len() > 0 {
8474		return invalidParams
8475	}
8476	return nil
8477}
8478
8479// SetCertificates sets the Certificates field's value.
8480func (s *RemoveListenerCertificatesInput) SetCertificates(v []*Certificate) *RemoveListenerCertificatesInput {
8481	s.Certificates = v
8482	return s
8483}
8484
8485// SetListenerArn sets the ListenerArn field's value.
8486func (s *RemoveListenerCertificatesInput) SetListenerArn(v string) *RemoveListenerCertificatesInput {
8487	s.ListenerArn = &v
8488	return s
8489}
8490
8491type RemoveListenerCertificatesOutput struct {
8492	_ struct{} `type:"structure"`
8493}
8494
8495// String returns the string representation.
8496//
8497// API parameter values that are decorated as "sensitive" in the API will not
8498// be included in the string output. The member name will be present, but the
8499// value will be replaced with "sensitive".
8500func (s RemoveListenerCertificatesOutput) String() string {
8501	return awsutil.Prettify(s)
8502}
8503
8504// GoString returns the string representation.
8505//
8506// API parameter values that are decorated as "sensitive" in the API will not
8507// be included in the string output. The member name will be present, but the
8508// value will be replaced with "sensitive".
8509func (s RemoveListenerCertificatesOutput) GoString() string {
8510	return s.String()
8511}
8512
8513type RemoveTagsInput struct {
8514	_ struct{} `type:"structure"`
8515
8516	// The Amazon Resource Name (ARN) of the resource.
8517	//
8518	// ResourceArns is a required field
8519	ResourceArns []*string `type:"list" required:"true"`
8520
8521	// The tag keys for the tags to remove.
8522	//
8523	// TagKeys is a required field
8524	TagKeys []*string `type:"list" required:"true"`
8525}
8526
8527// String returns the string representation.
8528//
8529// API parameter values that are decorated as "sensitive" in the API will not
8530// be included in the string output. The member name will be present, but the
8531// value will be replaced with "sensitive".
8532func (s RemoveTagsInput) String() string {
8533	return awsutil.Prettify(s)
8534}
8535
8536// GoString returns the string representation.
8537//
8538// API parameter values that are decorated as "sensitive" in the API will not
8539// be included in the string output. The member name will be present, but the
8540// value will be replaced with "sensitive".
8541func (s RemoveTagsInput) GoString() string {
8542	return s.String()
8543}
8544
8545// Validate inspects the fields of the type to determine if they are valid.
8546func (s *RemoveTagsInput) Validate() error {
8547	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsInput"}
8548	if s.ResourceArns == nil {
8549		invalidParams.Add(request.NewErrParamRequired("ResourceArns"))
8550	}
8551	if s.TagKeys == nil {
8552		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
8553	}
8554
8555	if invalidParams.Len() > 0 {
8556		return invalidParams
8557	}
8558	return nil
8559}
8560
8561// SetResourceArns sets the ResourceArns field's value.
8562func (s *RemoveTagsInput) SetResourceArns(v []*string) *RemoveTagsInput {
8563	s.ResourceArns = v
8564	return s
8565}
8566
8567// SetTagKeys sets the TagKeys field's value.
8568func (s *RemoveTagsInput) SetTagKeys(v []*string) *RemoveTagsInput {
8569	s.TagKeys = v
8570	return s
8571}
8572
8573type RemoveTagsOutput struct {
8574	_ struct{} `type:"structure"`
8575}
8576
8577// String returns the string representation.
8578//
8579// API parameter values that are decorated as "sensitive" in the API will not
8580// be included in the string output. The member name will be present, but the
8581// value will be replaced with "sensitive".
8582func (s RemoveTagsOutput) String() string {
8583	return awsutil.Prettify(s)
8584}
8585
8586// GoString returns the string representation.
8587//
8588// API parameter values that are decorated as "sensitive" in the API will not
8589// be included in the string output. The member name will be present, but the
8590// value will be replaced with "sensitive".
8591func (s RemoveTagsOutput) GoString() string {
8592	return s.String()
8593}
8594
8595// Information about a rule.
8596type Rule struct {
8597	_ struct{} `type:"structure"`
8598
8599	// The actions. Each rule must include exactly one of the following types of
8600	// actions: forward, redirect, or fixed-response, and it must be the last action
8601	// to be performed.
8602	Actions []*Action `type:"list"`
8603
8604	// The conditions. Each rule can include zero or one of the following conditions:
8605	// http-request-method, host-header, path-pattern, and source-ip, and zero or
8606	// more of the following conditions: http-header and query-string.
8607	Conditions []*RuleCondition `type:"list"`
8608
8609	// Indicates whether this is the default rule.
8610	IsDefault *bool `type:"boolean"`
8611
8612	// The priority.
8613	Priority *string `type:"string"`
8614
8615	// The Amazon Resource Name (ARN) of the rule.
8616	RuleArn *string `type:"string"`
8617}
8618
8619// String returns the string representation.
8620//
8621// API parameter values that are decorated as "sensitive" in the API will not
8622// be included in the string output. The member name will be present, but the
8623// value will be replaced with "sensitive".
8624func (s Rule) String() string {
8625	return awsutil.Prettify(s)
8626}
8627
8628// GoString returns the string representation.
8629//
8630// API parameter values that are decorated as "sensitive" in the API will not
8631// be included in the string output. The member name will be present, but the
8632// value will be replaced with "sensitive".
8633func (s Rule) GoString() string {
8634	return s.String()
8635}
8636
8637// SetActions sets the Actions field's value.
8638func (s *Rule) SetActions(v []*Action) *Rule {
8639	s.Actions = v
8640	return s
8641}
8642
8643// SetConditions sets the Conditions field's value.
8644func (s *Rule) SetConditions(v []*RuleCondition) *Rule {
8645	s.Conditions = v
8646	return s
8647}
8648
8649// SetIsDefault sets the IsDefault field's value.
8650func (s *Rule) SetIsDefault(v bool) *Rule {
8651	s.IsDefault = &v
8652	return s
8653}
8654
8655// SetPriority sets the Priority field's value.
8656func (s *Rule) SetPriority(v string) *Rule {
8657	s.Priority = &v
8658	return s
8659}
8660
8661// SetRuleArn sets the RuleArn field's value.
8662func (s *Rule) SetRuleArn(v string) *Rule {
8663	s.RuleArn = &v
8664	return s
8665}
8666
8667// Information about a condition for a rule.
8668//
8669// Each rule can optionally include up to one of each of the following conditions:
8670// http-request-method, host-header, path-pattern, and source-ip. Each rule
8671// can also optionally include one or more of each of the following conditions:
8672// http-header and query-string.
8673type RuleCondition struct {
8674	_ struct{} `type:"structure"`
8675
8676	// The field in the HTTP request. The following are the possible values:
8677	//
8678	//    * http-header
8679	//
8680	//    * http-request-method
8681	//
8682	//    * host-header
8683	//
8684	//    * path-pattern
8685	//
8686	//    * query-string
8687	//
8688	//    * source-ip
8689	Field *string `type:"string"`
8690
8691	// Information for a host header condition. Specify only when Field is host-header.
8692	HostHeaderConfig *HostHeaderConditionConfig `type:"structure"`
8693
8694	// Information for an HTTP header condition. Specify only when Field is http-header.
8695	HttpHeaderConfig *HttpHeaderConditionConfig `type:"structure"`
8696
8697	// Information for an HTTP method condition. Specify only when Field is http-request-method.
8698	HttpRequestMethodConfig *HttpRequestMethodConditionConfig `type:"structure"`
8699
8700	// Information for a path pattern condition. Specify only when Field is path-pattern.
8701	PathPatternConfig *PathPatternConditionConfig `type:"structure"`
8702
8703	// Information for a query string condition. Specify only when Field is query-string.
8704	QueryStringConfig *QueryStringConditionConfig `type:"structure"`
8705
8706	// Information for a source IP condition. Specify only when Field is source-ip.
8707	SourceIpConfig *SourceIpConditionConfig `type:"structure"`
8708
8709	// The condition value. Specify only when Field is host-header or path-pattern.
8710	// Alternatively, to specify multiple host names or multiple path patterns,
8711	// use HostHeaderConfig or PathPatternConfig.
8712	//
8713	// If Field is host-header and you are not using HostHeaderConfig, you can specify
8714	// a single host name (for example, my.example.com) in Values. A host name is
8715	// case insensitive, can be up to 128 characters in length, and can contain
8716	// any of the following characters.
8717	//
8718	//    * A-Z, a-z, 0-9
8719	//
8720	//    * - .
8721	//
8722	//    * * (matches 0 or more characters)
8723	//
8724	//    * ? (matches exactly 1 character)
8725	//
8726	// If Field is path-pattern and you are not using PathPatternConfig, you can
8727	// specify a single path pattern (for example, /img/*) in Values. A path pattern
8728	// is case-sensitive, can be up to 128 characters in length, and can contain
8729	// any of the following characters.
8730	//
8731	//    * A-Z, a-z, 0-9
8732	//
8733	//    * _ - . $ / ~ " ' @ : +
8734	//
8735	//    * & (using &)
8736	//
8737	//    * * (matches 0 or more characters)
8738	//
8739	//    * ? (matches exactly 1 character)
8740	Values []*string `type:"list"`
8741}
8742
8743// String returns the string representation.
8744//
8745// API parameter values that are decorated as "sensitive" in the API will not
8746// be included in the string output. The member name will be present, but the
8747// value will be replaced with "sensitive".
8748func (s RuleCondition) String() string {
8749	return awsutil.Prettify(s)
8750}
8751
8752// GoString returns the string representation.
8753//
8754// API parameter values that are decorated as "sensitive" in the API will not
8755// be included in the string output. The member name will be present, but the
8756// value will be replaced with "sensitive".
8757func (s RuleCondition) GoString() string {
8758	return s.String()
8759}
8760
8761// SetField sets the Field field's value.
8762func (s *RuleCondition) SetField(v string) *RuleCondition {
8763	s.Field = &v
8764	return s
8765}
8766
8767// SetHostHeaderConfig sets the HostHeaderConfig field's value.
8768func (s *RuleCondition) SetHostHeaderConfig(v *HostHeaderConditionConfig) *RuleCondition {
8769	s.HostHeaderConfig = v
8770	return s
8771}
8772
8773// SetHttpHeaderConfig sets the HttpHeaderConfig field's value.
8774func (s *RuleCondition) SetHttpHeaderConfig(v *HttpHeaderConditionConfig) *RuleCondition {
8775	s.HttpHeaderConfig = v
8776	return s
8777}
8778
8779// SetHttpRequestMethodConfig sets the HttpRequestMethodConfig field's value.
8780func (s *RuleCondition) SetHttpRequestMethodConfig(v *HttpRequestMethodConditionConfig) *RuleCondition {
8781	s.HttpRequestMethodConfig = v
8782	return s
8783}
8784
8785// SetPathPatternConfig sets the PathPatternConfig field's value.
8786func (s *RuleCondition) SetPathPatternConfig(v *PathPatternConditionConfig) *RuleCondition {
8787	s.PathPatternConfig = v
8788	return s
8789}
8790
8791// SetQueryStringConfig sets the QueryStringConfig field's value.
8792func (s *RuleCondition) SetQueryStringConfig(v *QueryStringConditionConfig) *RuleCondition {
8793	s.QueryStringConfig = v
8794	return s
8795}
8796
8797// SetSourceIpConfig sets the SourceIpConfig field's value.
8798func (s *RuleCondition) SetSourceIpConfig(v *SourceIpConditionConfig) *RuleCondition {
8799	s.SourceIpConfig = v
8800	return s
8801}
8802
8803// SetValues sets the Values field's value.
8804func (s *RuleCondition) SetValues(v []*string) *RuleCondition {
8805	s.Values = v
8806	return s
8807}
8808
8809// Information about the priorities for the rules for a listener.
8810type RulePriorityPair struct {
8811	_ struct{} `type:"structure"`
8812
8813	// The rule priority.
8814	Priority *int64 `min:"1" type:"integer"`
8815
8816	// The Amazon Resource Name (ARN) of the rule.
8817	RuleArn *string `type:"string"`
8818}
8819
8820// String returns the string representation.
8821//
8822// API parameter values that are decorated as "sensitive" in the API will not
8823// be included in the string output. The member name will be present, but the
8824// value will be replaced with "sensitive".
8825func (s RulePriorityPair) String() string {
8826	return awsutil.Prettify(s)
8827}
8828
8829// GoString returns the string representation.
8830//
8831// API parameter values that are decorated as "sensitive" in the API will not
8832// be included in the string output. The member name will be present, but the
8833// value will be replaced with "sensitive".
8834func (s RulePriorityPair) GoString() string {
8835	return s.String()
8836}
8837
8838// Validate inspects the fields of the type to determine if they are valid.
8839func (s *RulePriorityPair) Validate() error {
8840	invalidParams := request.ErrInvalidParams{Context: "RulePriorityPair"}
8841	if s.Priority != nil && *s.Priority < 1 {
8842		invalidParams.Add(request.NewErrParamMinValue("Priority", 1))
8843	}
8844
8845	if invalidParams.Len() > 0 {
8846		return invalidParams
8847	}
8848	return nil
8849}
8850
8851// SetPriority sets the Priority field's value.
8852func (s *RulePriorityPair) SetPriority(v int64) *RulePriorityPair {
8853	s.Priority = &v
8854	return s
8855}
8856
8857// SetRuleArn sets the RuleArn field's value.
8858func (s *RulePriorityPair) SetRuleArn(v string) *RulePriorityPair {
8859	s.RuleArn = &v
8860	return s
8861}
8862
8863type SetIpAddressTypeInput struct {
8864	_ struct{} `type:"structure"`
8865
8866	// The IP address type. The possible values are ipv4 (for IPv4 addresses) and
8867	// dualstack (for IPv4 and IPv6 addresses). Internal load balancers must use
8868	// ipv4. You can’t specify dualstack for a load balancer with a UDP or TCP_UDP
8869	// listener.
8870	//
8871	// IpAddressType is a required field
8872	IpAddressType *string `type:"string" required:"true" enum:"IpAddressType"`
8873
8874	// The Amazon Resource Name (ARN) of the load balancer.
8875	//
8876	// LoadBalancerArn is a required field
8877	LoadBalancerArn *string `type:"string" required:"true"`
8878}
8879
8880// String returns the string representation.
8881//
8882// API parameter values that are decorated as "sensitive" in the API will not
8883// be included in the string output. The member name will be present, but the
8884// value will be replaced with "sensitive".
8885func (s SetIpAddressTypeInput) String() string {
8886	return awsutil.Prettify(s)
8887}
8888
8889// GoString returns the string representation.
8890//
8891// API parameter values that are decorated as "sensitive" in the API will not
8892// be included in the string output. The member name will be present, but the
8893// value will be replaced with "sensitive".
8894func (s SetIpAddressTypeInput) GoString() string {
8895	return s.String()
8896}
8897
8898// Validate inspects the fields of the type to determine if they are valid.
8899func (s *SetIpAddressTypeInput) Validate() error {
8900	invalidParams := request.ErrInvalidParams{Context: "SetIpAddressTypeInput"}
8901	if s.IpAddressType == nil {
8902		invalidParams.Add(request.NewErrParamRequired("IpAddressType"))
8903	}
8904	if s.LoadBalancerArn == nil {
8905		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
8906	}
8907
8908	if invalidParams.Len() > 0 {
8909		return invalidParams
8910	}
8911	return nil
8912}
8913
8914// SetIpAddressType sets the IpAddressType field's value.
8915func (s *SetIpAddressTypeInput) SetIpAddressType(v string) *SetIpAddressTypeInput {
8916	s.IpAddressType = &v
8917	return s
8918}
8919
8920// SetLoadBalancerArn sets the LoadBalancerArn field's value.
8921func (s *SetIpAddressTypeInput) SetLoadBalancerArn(v string) *SetIpAddressTypeInput {
8922	s.LoadBalancerArn = &v
8923	return s
8924}
8925
8926type SetIpAddressTypeOutput struct {
8927	_ struct{} `type:"structure"`
8928
8929	// The IP address type.
8930	IpAddressType *string `type:"string" enum:"IpAddressType"`
8931}
8932
8933// String returns the string representation.
8934//
8935// API parameter values that are decorated as "sensitive" in the API will not
8936// be included in the string output. The member name will be present, but the
8937// value will be replaced with "sensitive".
8938func (s SetIpAddressTypeOutput) String() string {
8939	return awsutil.Prettify(s)
8940}
8941
8942// GoString returns the string representation.
8943//
8944// API parameter values that are decorated as "sensitive" in the API will not
8945// be included in the string output. The member name will be present, but the
8946// value will be replaced with "sensitive".
8947func (s SetIpAddressTypeOutput) GoString() string {
8948	return s.String()
8949}
8950
8951// SetIpAddressType sets the IpAddressType field's value.
8952func (s *SetIpAddressTypeOutput) SetIpAddressType(v string) *SetIpAddressTypeOutput {
8953	s.IpAddressType = &v
8954	return s
8955}
8956
8957type SetRulePrioritiesInput struct {
8958	_ struct{} `type:"structure"`
8959
8960	// The rule priorities.
8961	//
8962	// RulePriorities is a required field
8963	RulePriorities []*RulePriorityPair `type:"list" required:"true"`
8964}
8965
8966// String returns the string representation.
8967//
8968// API parameter values that are decorated as "sensitive" in the API will not
8969// be included in the string output. The member name will be present, but the
8970// value will be replaced with "sensitive".
8971func (s SetRulePrioritiesInput) String() string {
8972	return awsutil.Prettify(s)
8973}
8974
8975// GoString returns the string representation.
8976//
8977// API parameter values that are decorated as "sensitive" in the API will not
8978// be included in the string output. The member name will be present, but the
8979// value will be replaced with "sensitive".
8980func (s SetRulePrioritiesInput) GoString() string {
8981	return s.String()
8982}
8983
8984// Validate inspects the fields of the type to determine if they are valid.
8985func (s *SetRulePrioritiesInput) Validate() error {
8986	invalidParams := request.ErrInvalidParams{Context: "SetRulePrioritiesInput"}
8987	if s.RulePriorities == nil {
8988		invalidParams.Add(request.NewErrParamRequired("RulePriorities"))
8989	}
8990	if s.RulePriorities != nil {
8991		for i, v := range s.RulePriorities {
8992			if v == nil {
8993				continue
8994			}
8995			if err := v.Validate(); err != nil {
8996				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RulePriorities", i), err.(request.ErrInvalidParams))
8997			}
8998		}
8999	}
9000
9001	if invalidParams.Len() > 0 {
9002		return invalidParams
9003	}
9004	return nil
9005}
9006
9007// SetRulePriorities sets the RulePriorities field's value.
9008func (s *SetRulePrioritiesInput) SetRulePriorities(v []*RulePriorityPair) *SetRulePrioritiesInput {
9009	s.RulePriorities = v
9010	return s
9011}
9012
9013type SetRulePrioritiesOutput struct {
9014	_ struct{} `type:"structure"`
9015
9016	// Information about the rules.
9017	Rules []*Rule `type:"list"`
9018}
9019
9020// String returns the string representation.
9021//
9022// API parameter values that are decorated as "sensitive" in the API will not
9023// be included in the string output. The member name will be present, but the
9024// value will be replaced with "sensitive".
9025func (s SetRulePrioritiesOutput) String() string {
9026	return awsutil.Prettify(s)
9027}
9028
9029// GoString returns the string representation.
9030//
9031// API parameter values that are decorated as "sensitive" in the API will not
9032// be included in the string output. The member name will be present, but the
9033// value will be replaced with "sensitive".
9034func (s SetRulePrioritiesOutput) GoString() string {
9035	return s.String()
9036}
9037
9038// SetRules sets the Rules field's value.
9039func (s *SetRulePrioritiesOutput) SetRules(v []*Rule) *SetRulePrioritiesOutput {
9040	s.Rules = v
9041	return s
9042}
9043
9044type SetSecurityGroupsInput struct {
9045	_ struct{} `type:"structure"`
9046
9047	// The Amazon Resource Name (ARN) of the load balancer.
9048	//
9049	// LoadBalancerArn is a required field
9050	LoadBalancerArn *string `type:"string" required:"true"`
9051
9052	// The IDs of the security groups.
9053	//
9054	// SecurityGroups is a required field
9055	SecurityGroups []*string `type:"list" required:"true"`
9056}
9057
9058// String returns the string representation.
9059//
9060// API parameter values that are decorated as "sensitive" in the API will not
9061// be included in the string output. The member name will be present, but the
9062// value will be replaced with "sensitive".
9063func (s SetSecurityGroupsInput) String() string {
9064	return awsutil.Prettify(s)
9065}
9066
9067// GoString returns the string representation.
9068//
9069// API parameter values that are decorated as "sensitive" in the API will not
9070// be included in the string output. The member name will be present, but the
9071// value will be replaced with "sensitive".
9072func (s SetSecurityGroupsInput) GoString() string {
9073	return s.String()
9074}
9075
9076// Validate inspects the fields of the type to determine if they are valid.
9077func (s *SetSecurityGroupsInput) Validate() error {
9078	invalidParams := request.ErrInvalidParams{Context: "SetSecurityGroupsInput"}
9079	if s.LoadBalancerArn == nil {
9080		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
9081	}
9082	if s.SecurityGroups == nil {
9083		invalidParams.Add(request.NewErrParamRequired("SecurityGroups"))
9084	}
9085
9086	if invalidParams.Len() > 0 {
9087		return invalidParams
9088	}
9089	return nil
9090}
9091
9092// SetLoadBalancerArn sets the LoadBalancerArn field's value.
9093func (s *SetSecurityGroupsInput) SetLoadBalancerArn(v string) *SetSecurityGroupsInput {
9094	s.LoadBalancerArn = &v
9095	return s
9096}
9097
9098// SetSecurityGroups sets the SecurityGroups field's value.
9099func (s *SetSecurityGroupsInput) SetSecurityGroups(v []*string) *SetSecurityGroupsInput {
9100	s.SecurityGroups = v
9101	return s
9102}
9103
9104type SetSecurityGroupsOutput struct {
9105	_ struct{} `type:"structure"`
9106
9107	// The IDs of the security groups associated with the load balancer.
9108	SecurityGroupIds []*string `type:"list"`
9109}
9110
9111// String returns the string representation.
9112//
9113// API parameter values that are decorated as "sensitive" in the API will not
9114// be included in the string output. The member name will be present, but the
9115// value will be replaced with "sensitive".
9116func (s SetSecurityGroupsOutput) String() string {
9117	return awsutil.Prettify(s)
9118}
9119
9120// GoString returns the string representation.
9121//
9122// API parameter values that are decorated as "sensitive" in the API will not
9123// be included in the string output. The member name will be present, but the
9124// value will be replaced with "sensitive".
9125func (s SetSecurityGroupsOutput) GoString() string {
9126	return s.String()
9127}
9128
9129// SetSecurityGroupIds sets the SecurityGroupIds field's value.
9130func (s *SetSecurityGroupsOutput) SetSecurityGroupIds(v []*string) *SetSecurityGroupsOutput {
9131	s.SecurityGroupIds = v
9132	return s
9133}
9134
9135type SetSubnetsInput struct {
9136	_ struct{} `type:"structure"`
9137
9138	// [Network Load Balancers] The type of IP addresses used by the subnets for
9139	// your load balancer. The possible values are ipv4 (for IPv4 addresses) and
9140	// dualstack (for IPv4 and IPv6 addresses). You can’t specify dualstack for
9141	// a load balancer with a UDP or TCP_UDP listener. Internal load balancers must
9142	// use ipv4.
9143	IpAddressType *string `type:"string" enum:"IpAddressType"`
9144
9145	// The Amazon Resource Name (ARN) of the load balancer.
9146	//
9147	// LoadBalancerArn is a required field
9148	LoadBalancerArn *string `type:"string" required:"true"`
9149
9150	// The IDs of the public subnets. You can specify only one subnet per Availability
9151	// Zone. You must specify either subnets or subnet mappings.
9152	//
9153	// [Application Load Balancers] You must specify subnets from at least two Availability
9154	// Zones. You cannot specify Elastic IP addresses for your subnets.
9155	//
9156	// [Application Load Balancers on Outposts] You must specify one Outpost subnet.
9157	//
9158	// [Application Load Balancers on Local Zones] You can specify subnets from
9159	// one or more Local Zones.
9160	//
9161	// [Network Load Balancers] You can specify subnets from one or more Availability
9162	// Zones. You can specify one Elastic IP address per subnet if you need static
9163	// IP addresses for your internet-facing load balancer. For internal load balancers,
9164	// you can specify one private IP address per subnet from the IPv4 range of
9165	// the subnet. For internet-facing load balancer, you can specify one IPv6 address
9166	// per subnet.
9167	SubnetMappings []*SubnetMapping `type:"list"`
9168
9169	// The IDs of the public subnets. You can specify only one subnet per Availability
9170	// Zone. You must specify either subnets or subnet mappings.
9171	//
9172	// [Application Load Balancers] You must specify subnets from at least two Availability
9173	// Zones.
9174	//
9175	// [Application Load Balancers on Outposts] You must specify one Outpost subnet.
9176	//
9177	// [Application Load Balancers on Local Zones] You can specify subnets from
9178	// one or more Local Zones.
9179	//
9180	// [Network Load Balancers] You can specify subnets from one or more Availability
9181	// Zones.
9182	Subnets []*string `type:"list"`
9183}
9184
9185// String returns the string representation.
9186//
9187// API parameter values that are decorated as "sensitive" in the API will not
9188// be included in the string output. The member name will be present, but the
9189// value will be replaced with "sensitive".
9190func (s SetSubnetsInput) String() string {
9191	return awsutil.Prettify(s)
9192}
9193
9194// GoString returns the string representation.
9195//
9196// API parameter values that are decorated as "sensitive" in the API will not
9197// be included in the string output. The member name will be present, but the
9198// value will be replaced with "sensitive".
9199func (s SetSubnetsInput) GoString() string {
9200	return s.String()
9201}
9202
9203// Validate inspects the fields of the type to determine if they are valid.
9204func (s *SetSubnetsInput) Validate() error {
9205	invalidParams := request.ErrInvalidParams{Context: "SetSubnetsInput"}
9206	if s.LoadBalancerArn == nil {
9207		invalidParams.Add(request.NewErrParamRequired("LoadBalancerArn"))
9208	}
9209
9210	if invalidParams.Len() > 0 {
9211		return invalidParams
9212	}
9213	return nil
9214}
9215
9216// SetIpAddressType sets the IpAddressType field's value.
9217func (s *SetSubnetsInput) SetIpAddressType(v string) *SetSubnetsInput {
9218	s.IpAddressType = &v
9219	return s
9220}
9221
9222// SetLoadBalancerArn sets the LoadBalancerArn field's value.
9223func (s *SetSubnetsInput) SetLoadBalancerArn(v string) *SetSubnetsInput {
9224	s.LoadBalancerArn = &v
9225	return s
9226}
9227
9228// SetSubnetMappings sets the SubnetMappings field's value.
9229func (s *SetSubnetsInput) SetSubnetMappings(v []*SubnetMapping) *SetSubnetsInput {
9230	s.SubnetMappings = v
9231	return s
9232}
9233
9234// SetSubnets sets the Subnets field's value.
9235func (s *SetSubnetsInput) SetSubnets(v []*string) *SetSubnetsInput {
9236	s.Subnets = v
9237	return s
9238}
9239
9240type SetSubnetsOutput struct {
9241	_ struct{} `type:"structure"`
9242
9243	// Information about the subnets.
9244	AvailabilityZones []*AvailabilityZone `type:"list"`
9245
9246	// [Network Load Balancers] The IP address type.
9247	IpAddressType *string `type:"string" enum:"IpAddressType"`
9248}
9249
9250// String returns the string representation.
9251//
9252// API parameter values that are decorated as "sensitive" in the API will not
9253// be included in the string output. The member name will be present, but the
9254// value will be replaced with "sensitive".
9255func (s SetSubnetsOutput) String() string {
9256	return awsutil.Prettify(s)
9257}
9258
9259// GoString returns the string representation.
9260//
9261// API parameter values that are decorated as "sensitive" in the API will not
9262// be included in the string output. The member name will be present, but the
9263// value will be replaced with "sensitive".
9264func (s SetSubnetsOutput) GoString() string {
9265	return s.String()
9266}
9267
9268// SetAvailabilityZones sets the AvailabilityZones field's value.
9269func (s *SetSubnetsOutput) SetAvailabilityZones(v []*AvailabilityZone) *SetSubnetsOutput {
9270	s.AvailabilityZones = v
9271	return s
9272}
9273
9274// SetIpAddressType sets the IpAddressType field's value.
9275func (s *SetSubnetsOutput) SetIpAddressType(v string) *SetSubnetsOutput {
9276	s.IpAddressType = &v
9277	return s
9278}
9279
9280// Information about a source IP condition.
9281//
9282// You can use this condition to route based on the IP address of the source
9283// that connects to the load balancer. If a client is behind a proxy, this is
9284// the IP address of the proxy not the IP address of the client.
9285type SourceIpConditionConfig struct {
9286	_ struct{} `type:"structure"`
9287
9288	// One or more source IP addresses, in CIDR format. You can use both IPv4 and
9289	// IPv6 addresses. Wildcards are not supported.
9290	//
9291	// If you specify multiple addresses, the condition is satisfied if the source
9292	// IP address of the request matches one of the CIDR blocks. This condition
9293	// is not satisfied by the addresses in the X-Forwarded-For header. To search
9294	// for addresses in the X-Forwarded-For header, use HttpHeaderConditionConfig.
9295	Values []*string `type:"list"`
9296}
9297
9298// String returns the string representation.
9299//
9300// API parameter values that are decorated as "sensitive" in the API will not
9301// be included in the string output. The member name will be present, but the
9302// value will be replaced with "sensitive".
9303func (s SourceIpConditionConfig) String() string {
9304	return awsutil.Prettify(s)
9305}
9306
9307// GoString returns the string representation.
9308//
9309// API parameter values that are decorated as "sensitive" in the API will not
9310// be included in the string output. The member name will be present, but the
9311// value will be replaced with "sensitive".
9312func (s SourceIpConditionConfig) GoString() string {
9313	return s.String()
9314}
9315
9316// SetValues sets the Values field's value.
9317func (s *SourceIpConditionConfig) SetValues(v []*string) *SourceIpConditionConfig {
9318	s.Values = v
9319	return s
9320}
9321
9322// Information about a policy used for SSL negotiation.
9323type SslPolicy struct {
9324	_ struct{} `type:"structure"`
9325
9326	// The ciphers.
9327	Ciphers []*Cipher `type:"list"`
9328
9329	// The name of the policy.
9330	Name *string `type:"string"`
9331
9332	// The protocols.
9333	SslProtocols []*string `type:"list"`
9334
9335	// The supported load balancers.
9336	SupportedLoadBalancerTypes []*string `type:"list"`
9337}
9338
9339// String returns the string representation.
9340//
9341// API parameter values that are decorated as "sensitive" in the API will not
9342// be included in the string output. The member name will be present, but the
9343// value will be replaced with "sensitive".
9344func (s SslPolicy) String() string {
9345	return awsutil.Prettify(s)
9346}
9347
9348// GoString returns the string representation.
9349//
9350// API parameter values that are decorated as "sensitive" in the API will not
9351// be included in the string output. The member name will be present, but the
9352// value will be replaced with "sensitive".
9353func (s SslPolicy) GoString() string {
9354	return s.String()
9355}
9356
9357// SetCiphers sets the Ciphers field's value.
9358func (s *SslPolicy) SetCiphers(v []*Cipher) *SslPolicy {
9359	s.Ciphers = v
9360	return s
9361}
9362
9363// SetName sets the Name field's value.
9364func (s *SslPolicy) SetName(v string) *SslPolicy {
9365	s.Name = &v
9366	return s
9367}
9368
9369// SetSslProtocols sets the SslProtocols field's value.
9370func (s *SslPolicy) SetSslProtocols(v []*string) *SslPolicy {
9371	s.SslProtocols = v
9372	return s
9373}
9374
9375// SetSupportedLoadBalancerTypes sets the SupportedLoadBalancerTypes field's value.
9376func (s *SslPolicy) SetSupportedLoadBalancerTypes(v []*string) *SslPolicy {
9377	s.SupportedLoadBalancerTypes = v
9378	return s
9379}
9380
9381// Information about a subnet mapping.
9382type SubnetMapping struct {
9383	_ struct{} `type:"structure"`
9384
9385	// [Network Load Balancers] The allocation ID of the Elastic IP address for
9386	// an internet-facing load balancer.
9387	AllocationId *string `type:"string"`
9388
9389	// [Network Load Balancers] The IPv6 address.
9390	IPv6Address *string `type:"string"`
9391
9392	// [Network Load Balancers] The private IPv4 address for an internal load balancer.
9393	PrivateIPv4Address *string `type:"string"`
9394
9395	// The ID of the subnet.
9396	SubnetId *string `type:"string"`
9397}
9398
9399// String returns the string representation.
9400//
9401// API parameter values that are decorated as "sensitive" in the API will not
9402// be included in the string output. The member name will be present, but the
9403// value will be replaced with "sensitive".
9404func (s SubnetMapping) String() string {
9405	return awsutil.Prettify(s)
9406}
9407
9408// GoString returns the string representation.
9409//
9410// API parameter values that are decorated as "sensitive" in the API will not
9411// be included in the string output. The member name will be present, but the
9412// value will be replaced with "sensitive".
9413func (s SubnetMapping) GoString() string {
9414	return s.String()
9415}
9416
9417// SetAllocationId sets the AllocationId field's value.
9418func (s *SubnetMapping) SetAllocationId(v string) *SubnetMapping {
9419	s.AllocationId = &v
9420	return s
9421}
9422
9423// SetIPv6Address sets the IPv6Address field's value.
9424func (s *SubnetMapping) SetIPv6Address(v string) *SubnetMapping {
9425	s.IPv6Address = &v
9426	return s
9427}
9428
9429// SetPrivateIPv4Address sets the PrivateIPv4Address field's value.
9430func (s *SubnetMapping) SetPrivateIPv4Address(v string) *SubnetMapping {
9431	s.PrivateIPv4Address = &v
9432	return s
9433}
9434
9435// SetSubnetId sets the SubnetId field's value.
9436func (s *SubnetMapping) SetSubnetId(v string) *SubnetMapping {
9437	s.SubnetId = &v
9438	return s
9439}
9440
9441// Information about a tag.
9442type Tag struct {
9443	_ struct{} `type:"structure"`
9444
9445	// The key of the tag.
9446	//
9447	// Key is a required field
9448	Key *string `min:"1" type:"string" required:"true"`
9449
9450	// The value of the tag.
9451	Value *string `type:"string"`
9452}
9453
9454// String returns the string representation.
9455//
9456// API parameter values that are decorated as "sensitive" in the API will not
9457// be included in the string output. The member name will be present, but the
9458// value will be replaced with "sensitive".
9459func (s Tag) String() string {
9460	return awsutil.Prettify(s)
9461}
9462
9463// GoString returns the string representation.
9464//
9465// API parameter values that are decorated as "sensitive" in the API will not
9466// be included in the string output. The member name will be present, but the
9467// value will be replaced with "sensitive".
9468func (s Tag) GoString() string {
9469	return s.String()
9470}
9471
9472// Validate inspects the fields of the type to determine if they are valid.
9473func (s *Tag) Validate() error {
9474	invalidParams := request.ErrInvalidParams{Context: "Tag"}
9475	if s.Key == nil {
9476		invalidParams.Add(request.NewErrParamRequired("Key"))
9477	}
9478	if s.Key != nil && len(*s.Key) < 1 {
9479		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
9480	}
9481
9482	if invalidParams.Len() > 0 {
9483		return invalidParams
9484	}
9485	return nil
9486}
9487
9488// SetKey sets the Key field's value.
9489func (s *Tag) SetKey(v string) *Tag {
9490	s.Key = &v
9491	return s
9492}
9493
9494// SetValue sets the Value field's value.
9495func (s *Tag) SetValue(v string) *Tag {
9496	s.Value = &v
9497	return s
9498}
9499
9500// The tags associated with a resource.
9501type TagDescription struct {
9502	_ struct{} `type:"structure"`
9503
9504	// The Amazon Resource Name (ARN) of the resource.
9505	ResourceArn *string `type:"string"`
9506
9507	// Information about the tags.
9508	Tags []*Tag `min:"1" type:"list"`
9509}
9510
9511// String returns the string representation.
9512//
9513// API parameter values that are decorated as "sensitive" in the API will not
9514// be included in the string output. The member name will be present, but the
9515// value will be replaced with "sensitive".
9516func (s TagDescription) String() string {
9517	return awsutil.Prettify(s)
9518}
9519
9520// GoString returns the string representation.
9521//
9522// API parameter values that are decorated as "sensitive" in the API will not
9523// be included in the string output. The member name will be present, but the
9524// value will be replaced with "sensitive".
9525func (s TagDescription) GoString() string {
9526	return s.String()
9527}
9528
9529// SetResourceArn sets the ResourceArn field's value.
9530func (s *TagDescription) SetResourceArn(v string) *TagDescription {
9531	s.ResourceArn = &v
9532	return s
9533}
9534
9535// SetTags sets the Tags field's value.
9536func (s *TagDescription) SetTags(v []*Tag) *TagDescription {
9537	s.Tags = v
9538	return s
9539}
9540
9541// Information about a target.
9542type TargetDescription struct {
9543	_ struct{} `type:"structure"`
9544
9545	// An Availability Zone or all. This determines whether the target receives
9546	// traffic from the load balancer nodes in the specified Availability Zone or
9547	// from all enabled Availability Zones for the load balancer.
9548	//
9549	// This parameter is not supported if the target type of the target group is
9550	// instance or alb.
9551	//
9552	// If the target type is ip and the IP address is in a subnet of the VPC for
9553	// the target group, the Availability Zone is automatically detected and this
9554	// parameter is optional. If the IP address is outside the VPC, this parameter
9555	// is required.
9556	//
9557	// With an Application Load Balancer, if the target type is ip and the IP address
9558	// is outside the VPC for the target group, the only supported value is all.
9559	//
9560	// If the target type is lambda, this parameter is optional and the only supported
9561	// value is all.
9562	AvailabilityZone *string `type:"string"`
9563
9564	// The ID of the target. If the target type of the target group is instance,
9565	// specify an instance ID. If the target type is ip, specify an IP address.
9566	// If the target type is lambda, specify the ARN of the Lambda function. If
9567	// the target type is alb, specify the ARN of the Application Load Balancer
9568	// target.
9569	//
9570	// Id is a required field
9571	Id *string `type:"string" required:"true"`
9572
9573	// The port on which the target is listening. If the target group protocol is
9574	// GENEVE, the supported port is 6081. If the target type is alb, the targeted
9575	// Application Load Balancer must have at least one listener whose port matches
9576	// the target group port. Not used if the target is a Lambda function.
9577	Port *int64 `min:"1" type:"integer"`
9578}
9579
9580// String returns the string representation.
9581//
9582// API parameter values that are decorated as "sensitive" in the API will not
9583// be included in the string output. The member name will be present, but the
9584// value will be replaced with "sensitive".
9585func (s TargetDescription) String() string {
9586	return awsutil.Prettify(s)
9587}
9588
9589// GoString returns the string representation.
9590//
9591// API parameter values that are decorated as "sensitive" in the API will not
9592// be included in the string output. The member name will be present, but the
9593// value will be replaced with "sensitive".
9594func (s TargetDescription) GoString() string {
9595	return s.String()
9596}
9597
9598// Validate inspects the fields of the type to determine if they are valid.
9599func (s *TargetDescription) Validate() error {
9600	invalidParams := request.ErrInvalidParams{Context: "TargetDescription"}
9601	if s.Id == nil {
9602		invalidParams.Add(request.NewErrParamRequired("Id"))
9603	}
9604	if s.Port != nil && *s.Port < 1 {
9605		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
9606	}
9607
9608	if invalidParams.Len() > 0 {
9609		return invalidParams
9610	}
9611	return nil
9612}
9613
9614// SetAvailabilityZone sets the AvailabilityZone field's value.
9615func (s *TargetDescription) SetAvailabilityZone(v string) *TargetDescription {
9616	s.AvailabilityZone = &v
9617	return s
9618}
9619
9620// SetId sets the Id field's value.
9621func (s *TargetDescription) SetId(v string) *TargetDescription {
9622	s.Id = &v
9623	return s
9624}
9625
9626// SetPort sets the Port field's value.
9627func (s *TargetDescription) SetPort(v int64) *TargetDescription {
9628	s.Port = &v
9629	return s
9630}
9631
9632// Information about a target group.
9633type TargetGroup struct {
9634	_ struct{} `type:"structure"`
9635
9636	// Indicates whether health checks are enabled.
9637	HealthCheckEnabled *bool `type:"boolean"`
9638
9639	// The approximate amount of time, in seconds, between health checks of an individual
9640	// target.
9641	HealthCheckIntervalSeconds *int64 `min:"5" type:"integer"`
9642
9643	// The destination for health checks on the targets.
9644	HealthCheckPath *string `min:"1" type:"string"`
9645
9646	// The port to use to connect with the target.
9647	HealthCheckPort *string `type:"string"`
9648
9649	// The protocol to use to connect with the target. The GENEVE, TLS, UDP, and
9650	// TCP_UDP protocols are not supported for health checks.
9651	HealthCheckProtocol *string `type:"string" enum:"ProtocolEnum"`
9652
9653	// The amount of time, in seconds, during which no response means a failed health
9654	// check.
9655	HealthCheckTimeoutSeconds *int64 `min:"2" type:"integer"`
9656
9657	// The number of consecutive health checks successes required before considering
9658	// an unhealthy target healthy.
9659	HealthyThresholdCount *int64 `min:"2" type:"integer"`
9660
9661	// The type of IP address used for this target group. The possible values are
9662	// ipv4 and ipv6. This is an optional parameter. If not specified, the IP address
9663	// type defaults to ipv4.
9664	IpAddressType *string `type:"string" enum:"TargetGroupIpAddressTypeEnum"`
9665
9666	// The Amazon Resource Names (ARN) of the load balancers that route traffic
9667	// to this target group.
9668	LoadBalancerArns []*string `type:"list"`
9669
9670	// The HTTP or gRPC codes to use when checking for a successful response from
9671	// a target.
9672	Matcher *Matcher `type:"structure"`
9673
9674	// The port on which the targets are listening. Not used if the target is a
9675	// Lambda function.
9676	Port *int64 `min:"1" type:"integer"`
9677
9678	// The protocol to use for routing traffic to the targets.
9679	Protocol *string `type:"string" enum:"ProtocolEnum"`
9680
9681	// [HTTP/HTTPS protocol] The protocol version. The possible values are GRPC,
9682	// HTTP1, and HTTP2.
9683	ProtocolVersion *string `type:"string"`
9684
9685	// The Amazon Resource Name (ARN) of the target group.
9686	TargetGroupArn *string `type:"string"`
9687
9688	// The name of the target group.
9689	TargetGroupName *string `type:"string"`
9690
9691	// The type of target that you must specify when registering targets with this
9692	// target group. The possible values are instance (register targets by instance
9693	// ID), ip (register targets by IP address), lambda (register a single Lambda
9694	// function as a target), or alb (register a single Application Load Balancer
9695	// as a target).
9696	TargetType *string `type:"string" enum:"TargetTypeEnum"`
9697
9698	// The number of consecutive health check failures required before considering
9699	// the target unhealthy.
9700	UnhealthyThresholdCount *int64 `min:"2" type:"integer"`
9701
9702	// The ID of the VPC for the targets.
9703	VpcId *string `type:"string"`
9704}
9705
9706// String returns the string representation.
9707//
9708// API parameter values that are decorated as "sensitive" in the API will not
9709// be included in the string output. The member name will be present, but the
9710// value will be replaced with "sensitive".
9711func (s TargetGroup) String() string {
9712	return awsutil.Prettify(s)
9713}
9714
9715// GoString returns the string representation.
9716//
9717// API parameter values that are decorated as "sensitive" in the API will not
9718// be included in the string output. The member name will be present, but the
9719// value will be replaced with "sensitive".
9720func (s TargetGroup) GoString() string {
9721	return s.String()
9722}
9723
9724// SetHealthCheckEnabled sets the HealthCheckEnabled field's value.
9725func (s *TargetGroup) SetHealthCheckEnabled(v bool) *TargetGroup {
9726	s.HealthCheckEnabled = &v
9727	return s
9728}
9729
9730// SetHealthCheckIntervalSeconds sets the HealthCheckIntervalSeconds field's value.
9731func (s *TargetGroup) SetHealthCheckIntervalSeconds(v int64) *TargetGroup {
9732	s.HealthCheckIntervalSeconds = &v
9733	return s
9734}
9735
9736// SetHealthCheckPath sets the HealthCheckPath field's value.
9737func (s *TargetGroup) SetHealthCheckPath(v string) *TargetGroup {
9738	s.HealthCheckPath = &v
9739	return s
9740}
9741
9742// SetHealthCheckPort sets the HealthCheckPort field's value.
9743func (s *TargetGroup) SetHealthCheckPort(v string) *TargetGroup {
9744	s.HealthCheckPort = &v
9745	return s
9746}
9747
9748// SetHealthCheckProtocol sets the HealthCheckProtocol field's value.
9749func (s *TargetGroup) SetHealthCheckProtocol(v string) *TargetGroup {
9750	s.HealthCheckProtocol = &v
9751	return s
9752}
9753
9754// SetHealthCheckTimeoutSeconds sets the HealthCheckTimeoutSeconds field's value.
9755func (s *TargetGroup) SetHealthCheckTimeoutSeconds(v int64) *TargetGroup {
9756	s.HealthCheckTimeoutSeconds = &v
9757	return s
9758}
9759
9760// SetHealthyThresholdCount sets the HealthyThresholdCount field's value.
9761func (s *TargetGroup) SetHealthyThresholdCount(v int64) *TargetGroup {
9762	s.HealthyThresholdCount = &v
9763	return s
9764}
9765
9766// SetIpAddressType sets the IpAddressType field's value.
9767func (s *TargetGroup) SetIpAddressType(v string) *TargetGroup {
9768	s.IpAddressType = &v
9769	return s
9770}
9771
9772// SetLoadBalancerArns sets the LoadBalancerArns field's value.
9773func (s *TargetGroup) SetLoadBalancerArns(v []*string) *TargetGroup {
9774	s.LoadBalancerArns = v
9775	return s
9776}
9777
9778// SetMatcher sets the Matcher field's value.
9779func (s *TargetGroup) SetMatcher(v *Matcher) *TargetGroup {
9780	s.Matcher = v
9781	return s
9782}
9783
9784// SetPort sets the Port field's value.
9785func (s *TargetGroup) SetPort(v int64) *TargetGroup {
9786	s.Port = &v
9787	return s
9788}
9789
9790// SetProtocol sets the Protocol field's value.
9791func (s *TargetGroup) SetProtocol(v string) *TargetGroup {
9792	s.Protocol = &v
9793	return s
9794}
9795
9796// SetProtocolVersion sets the ProtocolVersion field's value.
9797func (s *TargetGroup) SetProtocolVersion(v string) *TargetGroup {
9798	s.ProtocolVersion = &v
9799	return s
9800}
9801
9802// SetTargetGroupArn sets the TargetGroupArn field's value.
9803func (s *TargetGroup) SetTargetGroupArn(v string) *TargetGroup {
9804	s.TargetGroupArn = &v
9805	return s
9806}
9807
9808// SetTargetGroupName sets the TargetGroupName field's value.
9809func (s *TargetGroup) SetTargetGroupName(v string) *TargetGroup {
9810	s.TargetGroupName = &v
9811	return s
9812}
9813
9814// SetTargetType sets the TargetType field's value.
9815func (s *TargetGroup) SetTargetType(v string) *TargetGroup {
9816	s.TargetType = &v
9817	return s
9818}
9819
9820// SetUnhealthyThresholdCount sets the UnhealthyThresholdCount field's value.
9821func (s *TargetGroup) SetUnhealthyThresholdCount(v int64) *TargetGroup {
9822	s.UnhealthyThresholdCount = &v
9823	return s
9824}
9825
9826// SetVpcId sets the VpcId field's value.
9827func (s *TargetGroup) SetVpcId(v string) *TargetGroup {
9828	s.VpcId = &v
9829	return s
9830}
9831
9832// Information about a target group attribute.
9833type TargetGroupAttribute struct {
9834	_ struct{} `type:"structure"`
9835
9836	// The name of the attribute.
9837	//
9838	// The following attribute is supported by all load balancers:
9839	//
9840	//    * deregistration_delay.timeout_seconds - The amount of time, in seconds,
9841	//    for Elastic Load Balancing to wait before changing the state of a deregistering
9842	//    target from draining to unused. The range is 0-3600 seconds. The default
9843	//    value is 300 seconds. If the target is a Lambda function, this attribute
9844	//    is not supported.
9845	//
9846	// The following attributes are supported by both Application Load Balancers
9847	// and Network Load Balancers:
9848	//
9849	//    * stickiness.enabled - Indicates whether sticky sessions are enabled.
9850	//    The value is true or false. The default is false.
9851	//
9852	//    * stickiness.type - The type of sticky sessions. The possible values are
9853	//    lb_cookie and app_cookie for Application Load Balancers or source_ip for
9854	//    Network Load Balancers.
9855	//
9856	// The following attributes are supported only if the load balancer is an Application
9857	// Load Balancer and the target is an instance or an IP address:
9858	//
9859	//    * load_balancing.algorithm.type - The load balancing algorithm determines
9860	//    how the load balancer selects targets when routing requests. The value
9861	//    is round_robin or least_outstanding_requests. The default is round_robin.
9862	//
9863	//    * slow_start.duration_seconds - The time period, in seconds, during which
9864	//    a newly registered target receives an increasing share of the traffic
9865	//    to the target group. After this time period ends, the target receives
9866	//    its full share of traffic. The range is 30-900 seconds (15 minutes). The
9867	//    default is 0 seconds (disabled).
9868	//
9869	//    * stickiness.app_cookie.cookie_name - Indicates the name of the application-based
9870	//    cookie. Names that start with the following prefixes are not allowed:
9871	//    AWSALB, AWSALBAPP, and AWSALBTG; they're reserved for use by the load
9872	//    balancer.
9873	//
9874	//    * stickiness.app_cookie.duration_seconds - The time period, in seconds,
9875	//    during which requests from a client should be routed to the same target.
9876	//    After this time period expires, the application-based cookie is considered
9877	//    stale. The range is 1 second to 1 week (604800 seconds). The default value
9878	//    is 1 day (86400 seconds).
9879	//
9880	//    * stickiness.lb_cookie.duration_seconds - The time period, in seconds,
9881	//    during which requests from a client should be routed to the same target.
9882	//    After this time period expires, the load balancer-generated cookie is
9883	//    considered stale. The range is 1 second to 1 week (604800 seconds). The
9884	//    default value is 1 day (86400 seconds).
9885	//
9886	// The following attribute is supported only if the load balancer is an Application
9887	// Load Balancer and the target is a Lambda function:
9888	//
9889	//    * lambda.multi_value_headers.enabled - Indicates whether the request and
9890	//    response headers that are exchanged between the load balancer and the
9891	//    Lambda function include arrays of values or strings. The value is true
9892	//    or false. The default is false. If the value is false and the request
9893	//    contains a duplicate header field name or query parameter key, the load
9894	//    balancer uses the last value sent by the client.
9895	//
9896	// The following attributes are supported only by Network Load Balancers:
9897	//
9898	//    * deregistration_delay.connection_termination.enabled - Indicates whether
9899	//    the load balancer terminates connections at the end of the deregistration
9900	//    timeout. The value is true or false. The default is false.
9901	//
9902	//    * preserve_client_ip.enabled - Indicates whether client IP preservation
9903	//    is enabled. The value is true or false. The default is disabled if the
9904	//    target group type is IP address and the target group protocol is TCP or
9905	//    TLS. Otherwise, the default is enabled. Client IP preservation cannot
9906	//    be disabled for UDP and TCP_UDP target groups.
9907	//
9908	//    * proxy_protocol_v2.enabled - Indicates whether Proxy Protocol version
9909	//    2 is enabled. The value is true or false. The default is false.
9910	Key *string `type:"string"`
9911
9912	// The value of the attribute.
9913	Value *string `type:"string"`
9914}
9915
9916// String returns the string representation.
9917//
9918// API parameter values that are decorated as "sensitive" in the API will not
9919// be included in the string output. The member name will be present, but the
9920// value will be replaced with "sensitive".
9921func (s TargetGroupAttribute) String() string {
9922	return awsutil.Prettify(s)
9923}
9924
9925// GoString returns the string representation.
9926//
9927// API parameter values that are decorated as "sensitive" in the API will not
9928// be included in the string output. The member name will be present, but the
9929// value will be replaced with "sensitive".
9930func (s TargetGroupAttribute) GoString() string {
9931	return s.String()
9932}
9933
9934// SetKey sets the Key field's value.
9935func (s *TargetGroupAttribute) SetKey(v string) *TargetGroupAttribute {
9936	s.Key = &v
9937	return s
9938}
9939
9940// SetValue sets the Value field's value.
9941func (s *TargetGroupAttribute) SetValue(v string) *TargetGroupAttribute {
9942	s.Value = &v
9943	return s
9944}
9945
9946// Information about the target group stickiness for a rule.
9947type TargetGroupStickinessConfig struct {
9948	_ struct{} `type:"structure"`
9949
9950	// The time period, in seconds, during which requests from a client should be
9951	// routed to the same target group. The range is 1-604800 seconds (7 days).
9952	DurationSeconds *int64 `type:"integer"`
9953
9954	// Indicates whether target group stickiness is enabled.
9955	Enabled *bool `type:"boolean"`
9956}
9957
9958// String returns the string representation.
9959//
9960// API parameter values that are decorated as "sensitive" in the API will not
9961// be included in the string output. The member name will be present, but the
9962// value will be replaced with "sensitive".
9963func (s TargetGroupStickinessConfig) String() string {
9964	return awsutil.Prettify(s)
9965}
9966
9967// GoString returns the string representation.
9968//
9969// API parameter values that are decorated as "sensitive" in the API will not
9970// be included in the string output. The member name will be present, but the
9971// value will be replaced with "sensitive".
9972func (s TargetGroupStickinessConfig) GoString() string {
9973	return s.String()
9974}
9975
9976// SetDurationSeconds sets the DurationSeconds field's value.
9977func (s *TargetGroupStickinessConfig) SetDurationSeconds(v int64) *TargetGroupStickinessConfig {
9978	s.DurationSeconds = &v
9979	return s
9980}
9981
9982// SetEnabled sets the Enabled field's value.
9983func (s *TargetGroupStickinessConfig) SetEnabled(v bool) *TargetGroupStickinessConfig {
9984	s.Enabled = &v
9985	return s
9986}
9987
9988// Information about how traffic will be distributed between multiple target
9989// groups in a forward rule.
9990type TargetGroupTuple struct {
9991	_ struct{} `type:"structure"`
9992
9993	// The Amazon Resource Name (ARN) of the target group.
9994	TargetGroupArn *string `type:"string"`
9995
9996	// The weight. The range is 0 to 999.
9997	Weight *int64 `type:"integer"`
9998}
9999
10000// String returns the string representation.
10001//
10002// API parameter values that are decorated as "sensitive" in the API will not
10003// be included in the string output. The member name will be present, but the
10004// value will be replaced with "sensitive".
10005func (s TargetGroupTuple) String() string {
10006	return awsutil.Prettify(s)
10007}
10008
10009// GoString returns the string representation.
10010//
10011// API parameter values that are decorated as "sensitive" in the API will not
10012// be included in the string output. The member name will be present, but the
10013// value will be replaced with "sensitive".
10014func (s TargetGroupTuple) GoString() string {
10015	return s.String()
10016}
10017
10018// SetTargetGroupArn sets the TargetGroupArn field's value.
10019func (s *TargetGroupTuple) SetTargetGroupArn(v string) *TargetGroupTuple {
10020	s.TargetGroupArn = &v
10021	return s
10022}
10023
10024// SetWeight sets the Weight field's value.
10025func (s *TargetGroupTuple) SetWeight(v int64) *TargetGroupTuple {
10026	s.Weight = &v
10027	return s
10028}
10029
10030// Information about the current health of a target.
10031type TargetHealth struct {
10032	_ struct{} `type:"structure"`
10033
10034	// A description of the target health that provides additional details. If the
10035	// state is healthy, a description is not provided.
10036	Description *string `type:"string"`
10037
10038	// The reason code.
10039	//
10040	// If the target state is healthy, a reason code is not provided.
10041	//
10042	// If the target state is initial, the reason code can be one of the following
10043	// values:
10044	//
10045	//    * Elb.RegistrationInProgress - The target is in the process of being registered
10046	//    with the load balancer.
10047	//
10048	//    * Elb.InitialHealthChecking - The load balancer is still sending the target
10049	//    the minimum number of health checks required to determine its health status.
10050	//
10051	// If the target state is unhealthy, the reason code can be one of the following
10052	// values:
10053	//
10054	//    * Target.ResponseCodeMismatch - The health checks did not return an expected
10055	//    HTTP code. Applies only to Application Load Balancers and Gateway Load
10056	//    Balancers.
10057	//
10058	//    * Target.Timeout - The health check requests timed out. Applies only to
10059	//    Application Load Balancers and Gateway Load Balancers.
10060	//
10061	//    * Target.FailedHealthChecks - The load balancer received an error while
10062	//    establishing a connection to the target or the target response was malformed.
10063	//
10064	//    * Elb.InternalError - The health checks failed due to an internal error.
10065	//    Applies only to Application Load Balancers.
10066	//
10067	// If the target state is unused, the reason code can be one of the following
10068	// values:
10069	//
10070	//    * Target.NotRegistered - The target is not registered with the target
10071	//    group.
10072	//
10073	//    * Target.NotInUse - The target group is not used by any load balancer
10074	//    or the target is in an Availability Zone that is not enabled for its load
10075	//    balancer.
10076	//
10077	//    * Target.InvalidState - The target is in the stopped or terminated state.
10078	//
10079	//    * Target.IpUnusable - The target IP address is reserved for use by a load
10080	//    balancer.
10081	//
10082	// If the target state is draining, the reason code can be the following value:
10083	//
10084	//    * Target.DeregistrationInProgress - The target is in the process of being
10085	//    deregistered and the deregistration delay period has not expired.
10086	//
10087	// If the target state is unavailable, the reason code can be the following
10088	// value:
10089	//
10090	//    * Target.HealthCheckDisabled - Health checks are disabled for the target
10091	//    group. Applies only to Application Load Balancers.
10092	//
10093	//    * Elb.InternalError - Target health is unavailable due to an internal
10094	//    error. Applies only to Network Load Balancers.
10095	Reason *string `type:"string" enum:"TargetHealthReasonEnum"`
10096
10097	// The state of the target.
10098	State *string `type:"string" enum:"TargetHealthStateEnum"`
10099}
10100
10101// String returns the string representation.
10102//
10103// API parameter values that are decorated as "sensitive" in the API will not
10104// be included in the string output. The member name will be present, but the
10105// value will be replaced with "sensitive".
10106func (s TargetHealth) String() string {
10107	return awsutil.Prettify(s)
10108}
10109
10110// GoString returns the string representation.
10111//
10112// API parameter values that are decorated as "sensitive" in the API will not
10113// be included in the string output. The member name will be present, but the
10114// value will be replaced with "sensitive".
10115func (s TargetHealth) GoString() string {
10116	return s.String()
10117}
10118
10119// SetDescription sets the Description field's value.
10120func (s *TargetHealth) SetDescription(v string) *TargetHealth {
10121	s.Description = &v
10122	return s
10123}
10124
10125// SetReason sets the Reason field's value.
10126func (s *TargetHealth) SetReason(v string) *TargetHealth {
10127	s.Reason = &v
10128	return s
10129}
10130
10131// SetState sets the State field's value.
10132func (s *TargetHealth) SetState(v string) *TargetHealth {
10133	s.State = &v
10134	return s
10135}
10136
10137// Information about the health of a target.
10138type TargetHealthDescription struct {
10139	_ struct{} `type:"structure"`
10140
10141	// The port to use to connect with the target.
10142	HealthCheckPort *string `type:"string"`
10143
10144	// The description of the target.
10145	Target *TargetDescription `type:"structure"`
10146
10147	// The health information for the target.
10148	TargetHealth *TargetHealth `type:"structure"`
10149}
10150
10151// String returns the string representation.
10152//
10153// API parameter values that are decorated as "sensitive" in the API will not
10154// be included in the string output. The member name will be present, but the
10155// value will be replaced with "sensitive".
10156func (s TargetHealthDescription) String() string {
10157	return awsutil.Prettify(s)
10158}
10159
10160// GoString returns the string representation.
10161//
10162// API parameter values that are decorated as "sensitive" in the API will not
10163// be included in the string output. The member name will be present, but the
10164// value will be replaced with "sensitive".
10165func (s TargetHealthDescription) GoString() string {
10166	return s.String()
10167}
10168
10169// SetHealthCheckPort sets the HealthCheckPort field's value.
10170func (s *TargetHealthDescription) SetHealthCheckPort(v string) *TargetHealthDescription {
10171	s.HealthCheckPort = &v
10172	return s
10173}
10174
10175// SetTarget sets the Target field's value.
10176func (s *TargetHealthDescription) SetTarget(v *TargetDescription) *TargetHealthDescription {
10177	s.Target = v
10178	return s
10179}
10180
10181// SetTargetHealth sets the TargetHealth field's value.
10182func (s *TargetHealthDescription) SetTargetHealth(v *TargetHealth) *TargetHealthDescription {
10183	s.TargetHealth = v
10184	return s
10185}
10186
10187const (
10188	// ActionTypeEnumForward is a ActionTypeEnum enum value
10189	ActionTypeEnumForward = "forward"
10190
10191	// ActionTypeEnumAuthenticateOidc is a ActionTypeEnum enum value
10192	ActionTypeEnumAuthenticateOidc = "authenticate-oidc"
10193
10194	// ActionTypeEnumAuthenticateCognito is a ActionTypeEnum enum value
10195	ActionTypeEnumAuthenticateCognito = "authenticate-cognito"
10196
10197	// ActionTypeEnumRedirect is a ActionTypeEnum enum value
10198	ActionTypeEnumRedirect = "redirect"
10199
10200	// ActionTypeEnumFixedResponse is a ActionTypeEnum enum value
10201	ActionTypeEnumFixedResponse = "fixed-response"
10202)
10203
10204// ActionTypeEnum_Values returns all elements of the ActionTypeEnum enum
10205func ActionTypeEnum_Values() []string {
10206	return []string{
10207		ActionTypeEnumForward,
10208		ActionTypeEnumAuthenticateOidc,
10209		ActionTypeEnumAuthenticateCognito,
10210		ActionTypeEnumRedirect,
10211		ActionTypeEnumFixedResponse,
10212	}
10213}
10214
10215const (
10216	// AuthenticateCognitoActionConditionalBehaviorEnumDeny is a AuthenticateCognitoActionConditionalBehaviorEnum enum value
10217	AuthenticateCognitoActionConditionalBehaviorEnumDeny = "deny"
10218
10219	// AuthenticateCognitoActionConditionalBehaviorEnumAllow is a AuthenticateCognitoActionConditionalBehaviorEnum enum value
10220	AuthenticateCognitoActionConditionalBehaviorEnumAllow = "allow"
10221
10222	// AuthenticateCognitoActionConditionalBehaviorEnumAuthenticate is a AuthenticateCognitoActionConditionalBehaviorEnum enum value
10223	AuthenticateCognitoActionConditionalBehaviorEnumAuthenticate = "authenticate"
10224)
10225
10226// AuthenticateCognitoActionConditionalBehaviorEnum_Values returns all elements of the AuthenticateCognitoActionConditionalBehaviorEnum enum
10227func AuthenticateCognitoActionConditionalBehaviorEnum_Values() []string {
10228	return []string{
10229		AuthenticateCognitoActionConditionalBehaviorEnumDeny,
10230		AuthenticateCognitoActionConditionalBehaviorEnumAllow,
10231		AuthenticateCognitoActionConditionalBehaviorEnumAuthenticate,
10232	}
10233}
10234
10235const (
10236	// AuthenticateOidcActionConditionalBehaviorEnumDeny is a AuthenticateOidcActionConditionalBehaviorEnum enum value
10237	AuthenticateOidcActionConditionalBehaviorEnumDeny = "deny"
10238
10239	// AuthenticateOidcActionConditionalBehaviorEnumAllow is a AuthenticateOidcActionConditionalBehaviorEnum enum value
10240	AuthenticateOidcActionConditionalBehaviorEnumAllow = "allow"
10241
10242	// AuthenticateOidcActionConditionalBehaviorEnumAuthenticate is a AuthenticateOidcActionConditionalBehaviorEnum enum value
10243	AuthenticateOidcActionConditionalBehaviorEnumAuthenticate = "authenticate"
10244)
10245
10246// AuthenticateOidcActionConditionalBehaviorEnum_Values returns all elements of the AuthenticateOidcActionConditionalBehaviorEnum enum
10247func AuthenticateOidcActionConditionalBehaviorEnum_Values() []string {
10248	return []string{
10249		AuthenticateOidcActionConditionalBehaviorEnumDeny,
10250		AuthenticateOidcActionConditionalBehaviorEnumAllow,
10251		AuthenticateOidcActionConditionalBehaviorEnumAuthenticate,
10252	}
10253}
10254
10255const (
10256	// IpAddressTypeIpv4 is a IpAddressType enum value
10257	IpAddressTypeIpv4 = "ipv4"
10258
10259	// IpAddressTypeDualstack is a IpAddressType enum value
10260	IpAddressTypeDualstack = "dualstack"
10261)
10262
10263// IpAddressType_Values returns all elements of the IpAddressType enum
10264func IpAddressType_Values() []string {
10265	return []string{
10266		IpAddressTypeIpv4,
10267		IpAddressTypeDualstack,
10268	}
10269}
10270
10271const (
10272	// LoadBalancerSchemeEnumInternetFacing is a LoadBalancerSchemeEnum enum value
10273	LoadBalancerSchemeEnumInternetFacing = "internet-facing"
10274
10275	// LoadBalancerSchemeEnumInternal is a LoadBalancerSchemeEnum enum value
10276	LoadBalancerSchemeEnumInternal = "internal"
10277)
10278
10279// LoadBalancerSchemeEnum_Values returns all elements of the LoadBalancerSchemeEnum enum
10280func LoadBalancerSchemeEnum_Values() []string {
10281	return []string{
10282		LoadBalancerSchemeEnumInternetFacing,
10283		LoadBalancerSchemeEnumInternal,
10284	}
10285}
10286
10287const (
10288	// LoadBalancerStateEnumActive is a LoadBalancerStateEnum enum value
10289	LoadBalancerStateEnumActive = "active"
10290
10291	// LoadBalancerStateEnumProvisioning is a LoadBalancerStateEnum enum value
10292	LoadBalancerStateEnumProvisioning = "provisioning"
10293
10294	// LoadBalancerStateEnumActiveImpaired is a LoadBalancerStateEnum enum value
10295	LoadBalancerStateEnumActiveImpaired = "active_impaired"
10296
10297	// LoadBalancerStateEnumFailed is a LoadBalancerStateEnum enum value
10298	LoadBalancerStateEnumFailed = "failed"
10299)
10300
10301// LoadBalancerStateEnum_Values returns all elements of the LoadBalancerStateEnum enum
10302func LoadBalancerStateEnum_Values() []string {
10303	return []string{
10304		LoadBalancerStateEnumActive,
10305		LoadBalancerStateEnumProvisioning,
10306		LoadBalancerStateEnumActiveImpaired,
10307		LoadBalancerStateEnumFailed,
10308	}
10309}
10310
10311const (
10312	// LoadBalancerTypeEnumApplication is a LoadBalancerTypeEnum enum value
10313	LoadBalancerTypeEnumApplication = "application"
10314
10315	// LoadBalancerTypeEnumNetwork is a LoadBalancerTypeEnum enum value
10316	LoadBalancerTypeEnumNetwork = "network"
10317
10318	// LoadBalancerTypeEnumGateway is a LoadBalancerTypeEnum enum value
10319	LoadBalancerTypeEnumGateway = "gateway"
10320)
10321
10322// LoadBalancerTypeEnum_Values returns all elements of the LoadBalancerTypeEnum enum
10323func LoadBalancerTypeEnum_Values() []string {
10324	return []string{
10325		LoadBalancerTypeEnumApplication,
10326		LoadBalancerTypeEnumNetwork,
10327		LoadBalancerTypeEnumGateway,
10328	}
10329}
10330
10331const (
10332	// ProtocolEnumHttp is a ProtocolEnum enum value
10333	ProtocolEnumHttp = "HTTP"
10334
10335	// ProtocolEnumHttps is a ProtocolEnum enum value
10336	ProtocolEnumHttps = "HTTPS"
10337
10338	// ProtocolEnumTcp is a ProtocolEnum enum value
10339	ProtocolEnumTcp = "TCP"
10340
10341	// ProtocolEnumTls is a ProtocolEnum enum value
10342	ProtocolEnumTls = "TLS"
10343
10344	// ProtocolEnumUdp is a ProtocolEnum enum value
10345	ProtocolEnumUdp = "UDP"
10346
10347	// ProtocolEnumTcpUdp is a ProtocolEnum enum value
10348	ProtocolEnumTcpUdp = "TCP_UDP"
10349
10350	// ProtocolEnumGeneve is a ProtocolEnum enum value
10351	ProtocolEnumGeneve = "GENEVE"
10352)
10353
10354// ProtocolEnum_Values returns all elements of the ProtocolEnum enum
10355func ProtocolEnum_Values() []string {
10356	return []string{
10357		ProtocolEnumHttp,
10358		ProtocolEnumHttps,
10359		ProtocolEnumTcp,
10360		ProtocolEnumTls,
10361		ProtocolEnumUdp,
10362		ProtocolEnumTcpUdp,
10363		ProtocolEnumGeneve,
10364	}
10365}
10366
10367const (
10368	// RedirectActionStatusCodeEnumHttp301 is a RedirectActionStatusCodeEnum enum value
10369	RedirectActionStatusCodeEnumHttp301 = "HTTP_301"
10370
10371	// RedirectActionStatusCodeEnumHttp302 is a RedirectActionStatusCodeEnum enum value
10372	RedirectActionStatusCodeEnumHttp302 = "HTTP_302"
10373)
10374
10375// RedirectActionStatusCodeEnum_Values returns all elements of the RedirectActionStatusCodeEnum enum
10376func RedirectActionStatusCodeEnum_Values() []string {
10377	return []string{
10378		RedirectActionStatusCodeEnumHttp301,
10379		RedirectActionStatusCodeEnumHttp302,
10380	}
10381}
10382
10383const (
10384	// TargetGroupIpAddressTypeEnumIpv4 is a TargetGroupIpAddressTypeEnum enum value
10385	TargetGroupIpAddressTypeEnumIpv4 = "ipv4"
10386
10387	// TargetGroupIpAddressTypeEnumIpv6 is a TargetGroupIpAddressTypeEnum enum value
10388	TargetGroupIpAddressTypeEnumIpv6 = "ipv6"
10389)
10390
10391// TargetGroupIpAddressTypeEnum_Values returns all elements of the TargetGroupIpAddressTypeEnum enum
10392func TargetGroupIpAddressTypeEnum_Values() []string {
10393	return []string{
10394		TargetGroupIpAddressTypeEnumIpv4,
10395		TargetGroupIpAddressTypeEnumIpv6,
10396	}
10397}
10398
10399const (
10400	// TargetHealthReasonEnumElbRegistrationInProgress is a TargetHealthReasonEnum enum value
10401	TargetHealthReasonEnumElbRegistrationInProgress = "Elb.RegistrationInProgress"
10402
10403	// TargetHealthReasonEnumElbInitialHealthChecking is a TargetHealthReasonEnum enum value
10404	TargetHealthReasonEnumElbInitialHealthChecking = "Elb.InitialHealthChecking"
10405
10406	// TargetHealthReasonEnumTargetResponseCodeMismatch is a TargetHealthReasonEnum enum value
10407	TargetHealthReasonEnumTargetResponseCodeMismatch = "Target.ResponseCodeMismatch"
10408
10409	// TargetHealthReasonEnumTargetTimeout is a TargetHealthReasonEnum enum value
10410	TargetHealthReasonEnumTargetTimeout = "Target.Timeout"
10411
10412	// TargetHealthReasonEnumTargetFailedHealthChecks is a TargetHealthReasonEnum enum value
10413	TargetHealthReasonEnumTargetFailedHealthChecks = "Target.FailedHealthChecks"
10414
10415	// TargetHealthReasonEnumTargetNotRegistered is a TargetHealthReasonEnum enum value
10416	TargetHealthReasonEnumTargetNotRegistered = "Target.NotRegistered"
10417
10418	// TargetHealthReasonEnumTargetNotInUse is a TargetHealthReasonEnum enum value
10419	TargetHealthReasonEnumTargetNotInUse = "Target.NotInUse"
10420
10421	// TargetHealthReasonEnumTargetDeregistrationInProgress is a TargetHealthReasonEnum enum value
10422	TargetHealthReasonEnumTargetDeregistrationInProgress = "Target.DeregistrationInProgress"
10423
10424	// TargetHealthReasonEnumTargetInvalidState is a TargetHealthReasonEnum enum value
10425	TargetHealthReasonEnumTargetInvalidState = "Target.InvalidState"
10426
10427	// TargetHealthReasonEnumTargetIpUnusable is a TargetHealthReasonEnum enum value
10428	TargetHealthReasonEnumTargetIpUnusable = "Target.IpUnusable"
10429
10430	// TargetHealthReasonEnumTargetHealthCheckDisabled is a TargetHealthReasonEnum enum value
10431	TargetHealthReasonEnumTargetHealthCheckDisabled = "Target.HealthCheckDisabled"
10432
10433	// TargetHealthReasonEnumElbInternalError is a TargetHealthReasonEnum enum value
10434	TargetHealthReasonEnumElbInternalError = "Elb.InternalError"
10435)
10436
10437// TargetHealthReasonEnum_Values returns all elements of the TargetHealthReasonEnum enum
10438func TargetHealthReasonEnum_Values() []string {
10439	return []string{
10440		TargetHealthReasonEnumElbRegistrationInProgress,
10441		TargetHealthReasonEnumElbInitialHealthChecking,
10442		TargetHealthReasonEnumTargetResponseCodeMismatch,
10443		TargetHealthReasonEnumTargetTimeout,
10444		TargetHealthReasonEnumTargetFailedHealthChecks,
10445		TargetHealthReasonEnumTargetNotRegistered,
10446		TargetHealthReasonEnumTargetNotInUse,
10447		TargetHealthReasonEnumTargetDeregistrationInProgress,
10448		TargetHealthReasonEnumTargetInvalidState,
10449		TargetHealthReasonEnumTargetIpUnusable,
10450		TargetHealthReasonEnumTargetHealthCheckDisabled,
10451		TargetHealthReasonEnumElbInternalError,
10452	}
10453}
10454
10455const (
10456	// TargetHealthStateEnumInitial is a TargetHealthStateEnum enum value
10457	TargetHealthStateEnumInitial = "initial"
10458
10459	// TargetHealthStateEnumHealthy is a TargetHealthStateEnum enum value
10460	TargetHealthStateEnumHealthy = "healthy"
10461
10462	// TargetHealthStateEnumUnhealthy is a TargetHealthStateEnum enum value
10463	TargetHealthStateEnumUnhealthy = "unhealthy"
10464
10465	// TargetHealthStateEnumUnused is a TargetHealthStateEnum enum value
10466	TargetHealthStateEnumUnused = "unused"
10467
10468	// TargetHealthStateEnumDraining is a TargetHealthStateEnum enum value
10469	TargetHealthStateEnumDraining = "draining"
10470
10471	// TargetHealthStateEnumUnavailable is a TargetHealthStateEnum enum value
10472	TargetHealthStateEnumUnavailable = "unavailable"
10473)
10474
10475// TargetHealthStateEnum_Values returns all elements of the TargetHealthStateEnum enum
10476func TargetHealthStateEnum_Values() []string {
10477	return []string{
10478		TargetHealthStateEnumInitial,
10479		TargetHealthStateEnumHealthy,
10480		TargetHealthStateEnumUnhealthy,
10481		TargetHealthStateEnumUnused,
10482		TargetHealthStateEnumDraining,
10483		TargetHealthStateEnumUnavailable,
10484	}
10485}
10486
10487const (
10488	// TargetTypeEnumInstance is a TargetTypeEnum enum value
10489	TargetTypeEnumInstance = "instance"
10490
10491	// TargetTypeEnumIp is a TargetTypeEnum enum value
10492	TargetTypeEnumIp = "ip"
10493
10494	// TargetTypeEnumLambda is a TargetTypeEnum enum value
10495	TargetTypeEnumLambda = "lambda"
10496
10497	// TargetTypeEnumAlb is a TargetTypeEnum enum value
10498	TargetTypeEnumAlb = "alb"
10499)
10500
10501// TargetTypeEnum_Values returns all elements of the TargetTypeEnum enum
10502func TargetTypeEnum_Values() []string {
10503	return []string{
10504		TargetTypeEnumInstance,
10505		TargetTypeEnumIp,
10506		TargetTypeEnumLambda,
10507		TargetTypeEnumAlb,
10508	}
10509}
10510