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