code.dwrz.net

Go monorepo.
Log | Files | Refs

api_op_UpdateHealthCheck.go (17940B)


      1 // Code generated by smithy-go-codegen DO NOT EDIT.
      2 
      3 package route53
      4 
      5 import (
      6 	"context"
      7 	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
      8 	"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
      9 	"github.com/aws/aws-sdk-go-v2/service/route53/types"
     10 	"github.com/aws/smithy-go/middleware"
     11 	smithyhttp "github.com/aws/smithy-go/transport/http"
     12 )
     13 
     14 // Updates an existing health check. Note that some values can't be updated. For
     15 // more information about updating health checks, see Creating, Updating, and
     16 // Deleting Health Checks
     17 // (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-deleting.html)
     18 // in the Amazon Route 53 Developer Guide.
     19 func (c *Client) UpdateHealthCheck(ctx context.Context, params *UpdateHealthCheckInput, optFns ...func(*Options)) (*UpdateHealthCheckOutput, error) {
     20 	if params == nil {
     21 		params = &UpdateHealthCheckInput{}
     22 	}
     23 
     24 	result, metadata, err := c.invokeOperation(ctx, "UpdateHealthCheck", params, optFns, c.addOperationUpdateHealthCheckMiddlewares)
     25 	if err != nil {
     26 		return nil, err
     27 	}
     28 
     29 	out := result.(*UpdateHealthCheckOutput)
     30 	out.ResultMetadata = metadata
     31 	return out, nil
     32 }
     33 
     34 // A complex type that contains information about a request to update a health
     35 // check.
     36 type UpdateHealthCheckInput struct {
     37 
     38 	// The ID for the health check for which you want detailed information. When you
     39 	// created the health check, CreateHealthCheck returned the ID in the response, in
     40 	// the HealthCheckId element.
     41 	//
     42 	// This member is required.
     43 	HealthCheckId *string
     44 
     45 	// A complex type that identifies the CloudWatch alarm that you want Amazon Route
     46 	// 53 health checkers to use to determine whether the specified health check is
     47 	// healthy.
     48 	AlarmIdentifier *types.AlarmIdentifier
     49 
     50 	// A complex type that contains one ChildHealthCheck element for each health check
     51 	// that you want to associate with a CALCULATED health check.
     52 	ChildHealthChecks []string
     53 
     54 	// Stops Route 53 from performing health checks. When you disable a health check,
     55 	// here's what happens:
     56 	//
     57 	// * Health checks that check the health of endpoints: Route
     58 	// 53 stops submitting requests to your application, server, or other resource.
     59 	//
     60 	// *
     61 	// Calculated health checks: Route 53 stops aggregating the status of the
     62 	// referenced health checks.
     63 	//
     64 	// * Health checks that monitor CloudWatch alarms: Route
     65 	// 53 stops monitoring the corresponding CloudWatch metrics.
     66 	//
     67 	// After you disable a
     68 	// health check, Route 53 considers the status of the health check to always be
     69 	// healthy. If you configured DNS failover, Route 53 continues to route traffic to
     70 	// the corresponding resources. If you want to stop routing traffic to a resource,
     71 	// change the value of Inverted
     72 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-Inverted).
     73 	// Charges for a health check still apply when the health check is disabled. For
     74 	// more information, see Amazon Route 53 Pricing
     75 	// (http://aws.amazon.com/route53/pricing/).
     76 	Disabled *bool
     77 
     78 	// Specify whether you want Amazon Route 53 to send the value of
     79 	// FullyQualifiedDomainName to the endpoint in the client_hello message during TLS
     80 	// negotiation. This allows the endpoint to respond to HTTPS health check requests
     81 	// with the applicable SSL/TLS certificate. Some endpoints require that HTTPS
     82 	// requests include the host name in the client_hello message. If you don't enable
     83 	// SNI, the status of the health check will be SSL alert handshake_failure. A
     84 	// health check can also have that status for other reasons. If SNI is enabled and
     85 	// you're still getting the error, check the SSL/TLS configuration on your endpoint
     86 	// and confirm that your certificate is valid. The SSL/TLS certificate on your
     87 	// endpoint includes a domain name in the Common Name field and possibly several
     88 	// more in the Subject Alternative Names field. One of the domain names in the
     89 	// certificate should match the value that you specify for
     90 	// FullyQualifiedDomainName. If the endpoint responds to the client_hello message
     91 	// with a certificate that does not include the domain name that you specified in
     92 	// FullyQualifiedDomainName, a health checker will retry the handshake. In the
     93 	// second attempt, the health checker will omit FullyQualifiedDomainName from the
     94 	// client_hello message.
     95 	EnableSNI *bool
     96 
     97 	// The number of consecutive health checks that an endpoint must pass or fail for
     98 	// Amazon Route 53 to change the current status of the endpoint from unhealthy to
     99 	// healthy or vice versa. For more information, see How Amazon Route 53 Determines
    100 	// Whether an Endpoint Is Healthy
    101 	// (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html)
    102 	// in the Amazon Route 53 Developer Guide. If you don't specify a value for
    103 	// FailureThreshold, the default value is three health checks.
    104 	FailureThreshold *int32
    105 
    106 	// Amazon Route 53 behavior depends on whether you specify a value for IPAddress.
    107 	// If a health check already has a value for IPAddress, you can change the value.
    108 	// However, you can't update an existing health check to add or remove the value of
    109 	// IPAddress. If you specify a value for IPAddress: Route 53 sends health check
    110 	// requests to the specified IPv4 or IPv6 address and passes the value of
    111 	// FullyQualifiedDomainName in the Host header for all health checks except TCP
    112 	// health checks. This is typically the fully qualified DNS name of the endpoint on
    113 	// which you want Route 53 to perform health checks. When Route 53 checks the
    114 	// health of an endpoint, here is how it constructs the Host header:
    115 	//
    116 	// * If you
    117 	// specify a value of 80 for Port and HTTP or HTTP_STR_MATCH for Type, Route 53
    118 	// passes the value of FullyQualifiedDomainName to the endpoint in the Host
    119 	// header.
    120 	//
    121 	// * If you specify a value of 443 for Port and HTTPS or HTTPS_STR_MATCH
    122 	// for Type, Route 53 passes the value of FullyQualifiedDomainName to the endpoint
    123 	// in the Host header.
    124 	//
    125 	// * If you specify another value for Port and any value
    126 	// except TCP for Type, Route 53 passes FullyQualifiedDomainName:Port to the
    127 	// endpoint in the Host header.
    128 	//
    129 	// If you don't specify a value for
    130 	// FullyQualifiedDomainName, Route 53 substitutes the value of IPAddress in the
    131 	// Host header in each of the above cases. If you don't specify a value for
    132 	// IPAddress: If you don't specify a value for IPAddress, Route 53 sends a DNS
    133 	// request to the domain that you specify in FullyQualifiedDomainName at the
    134 	// interval you specify in RequestInterval. Using an IPv4 address that is returned
    135 	// by DNS, Route 53 then checks the health of the endpoint. If you don't specify a
    136 	// value for IPAddress, Route 53 uses only IPv4 to send health checks to the
    137 	// endpoint. If there's no resource record set with a type of A for the name that
    138 	// you specify for FullyQualifiedDomainName, the health check fails with a "DNS
    139 	// resolution failed" error. If you want to check the health of weighted, latency,
    140 	// or failover resource record sets and you choose to specify the endpoint only by
    141 	// FullyQualifiedDomainName, we recommend that you create a separate health check
    142 	// for each endpoint. For example, create a health check for each HTTP server that
    143 	// is serving content for www.example.com. For the value of
    144 	// FullyQualifiedDomainName, specify the domain name of the server (such as
    145 	// us-east-2-www.example.com), not the name of the resource record sets
    146 	// (www.example.com). In this configuration, if the value of
    147 	// FullyQualifiedDomainName matches the name of the resource record sets and you
    148 	// then associate the health check with those resource record sets, health check
    149 	// results will be unpredictable. In addition, if the value of Type is HTTP, HTTPS,
    150 	// HTTP_STR_MATCH, or HTTPS_STR_MATCH, Route 53 passes the value of
    151 	// FullyQualifiedDomainName in the Host header, as it does when you specify a value
    152 	// for IPAddress. If the value of Type is TCP, Route 53 doesn't pass a Host header.
    153 	FullyQualifiedDomainName *string
    154 
    155 	// A sequential counter that Amazon Route 53 sets to 1 when you create a health
    156 	// check and increments by 1 each time you update settings for the health check. We
    157 	// recommend that you use GetHealthCheck or ListHealthChecks to get the current
    158 	// value of HealthCheckVersion for the health check that you want to update, and
    159 	// that you include that value in your UpdateHealthCheck request. This prevents
    160 	// Route 53 from overwriting an intervening update:
    161 	//
    162 	// * If the value in the
    163 	// UpdateHealthCheck request matches the value of HealthCheckVersion in the health
    164 	// check, Route 53 updates the health check with the new settings.
    165 	//
    166 	// * If the value
    167 	// of HealthCheckVersion in the health check is greater, the health check was
    168 	// changed after you got the version number. Route 53 does not update the health
    169 	// check, and it returns a HealthCheckVersionMismatch error.
    170 	HealthCheckVersion *int64
    171 
    172 	// The number of child health checks that are associated with a CALCULATED health
    173 	// that Amazon Route 53 must consider healthy for the CALCULATED health check to be
    174 	// considered healthy. To specify the child health checks that you want to
    175 	// associate with a CALCULATED health check, use the ChildHealthChecks and
    176 	// ChildHealthCheck elements. Note the following:
    177 	//
    178 	// * If you specify a number
    179 	// greater than the number of child health checks, Route 53 always considers this
    180 	// health check to be unhealthy.
    181 	//
    182 	// * If you specify 0, Route 53 always considers
    183 	// this health check to be healthy.
    184 	HealthThreshold *int32
    185 
    186 	// The IPv4 or IPv6 IP address for the endpoint that you want Amazon Route 53 to
    187 	// perform health checks on. If you don't specify a value for IPAddress, Route 53
    188 	// sends a DNS request to resolve the domain name that you specify in
    189 	// FullyQualifiedDomainName at the interval that you specify in RequestInterval.
    190 	// Using an IP address that is returned by DNS, Route 53 then checks the health of
    191 	// the endpoint. Use one of the following formats for the value of IPAddress:
    192 	//
    193 	// *
    194 	// IPv4 address: four values between 0 and 255, separated by periods (.), for
    195 	// example, 192.0.2.44.
    196 	//
    197 	// * IPv6 address: eight groups of four hexadecimal values,
    198 	// separated by colons (:), for example, 2001:0db8:85a3:0000:0000:abcd:0001:2345.
    199 	// You can also shorten IPv6 addresses as described in RFC 5952, for example,
    200 	// 2001:db8:85a3::abcd:1:2345.
    201 	//
    202 	// If the endpoint is an EC2 instance, we recommend
    203 	// that you create an Elastic IP address, associate it with your EC2 instance, and
    204 	// specify the Elastic IP address for IPAddress. This ensures that the IP address
    205 	// of your instance never changes. For more information, see the applicable
    206 	// documentation:
    207 	//
    208 	// * Linux: Elastic IP Addresses (EIP)
    209 	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)
    210 	// in the Amazon EC2 User Guide for Linux Instances
    211 	//
    212 	// * Windows: Elastic IP
    213 	// Addresses (EIP)
    214 	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/elastic-ip-addresses-eip.html)
    215 	// in the Amazon EC2 User Guide for Windows Instances
    216 	//
    217 	// If a health check already
    218 	// has a value for IPAddress, you can change the value. However, you can't update
    219 	// an existing health check to add or remove the value of IPAddress. For more
    220 	// information, see FullyQualifiedDomainName
    221 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName).
    222 	// Constraints: Route 53 can't check the health of endpoints for which the IP
    223 	// address is in local, private, non-routable, or multicast ranges. For more
    224 	// information about IP addresses for which you can't create health checks, see the
    225 	// following documents:
    226 	//
    227 	// * RFC 5735, Special Use IPv4 Addresses
    228 	// (https://tools.ietf.org/html/rfc5735)
    229 	//
    230 	// * RFC 6598, IANA-Reserved IPv4 Prefix for
    231 	// Shared Address Space (https://tools.ietf.org/html/rfc6598)
    232 	//
    233 	// * RFC 5156,
    234 	// Special-Use IPv6 Addresses (https://tools.ietf.org/html/rfc5156)
    235 	IPAddress *string
    236 
    237 	// When CloudWatch has insufficient data about the metric to determine the alarm
    238 	// state, the status that you want Amazon Route 53 to assign to the health
    239 	// check:
    240 	//
    241 	// * Healthy: Route 53 considers the health check to be healthy.
    242 	//
    243 	// *
    244 	// Unhealthy: Route 53 considers the health check to be unhealthy.
    245 	//
    246 	// *
    247 	// LastKnownStatus: By default, Route 53 uses the status of the health check from
    248 	// the last time CloudWatch had sufficient data to determine the alarm state. For
    249 	// new health checks that have no last known status, the status for the health
    250 	// check is healthy.
    251 	InsufficientDataHealthStatus types.InsufficientDataHealthStatus
    252 
    253 	// Specify whether you want Amazon Route 53 to invert the status of a health check,
    254 	// for example, to consider a health check unhealthy when it otherwise would be
    255 	// considered healthy.
    256 	Inverted *bool
    257 
    258 	// The port on the endpoint that you want Amazon Route 53 to perform health checks
    259 	// on. Don't specify a value for Port when you specify a value for Type of
    260 	// CLOUDWATCH_METRIC or CALCULATED.
    261 	Port *int32
    262 
    263 	// A complex type that contains one Region element for each region that you want
    264 	// Amazon Route 53 health checkers to check the specified endpoint from.
    265 	Regions []types.HealthCheckRegion
    266 
    267 	// A complex type that contains one ResettableElementName element for each element
    268 	// that you want to reset to the default value. Valid values for
    269 	// ResettableElementName include the following:
    270 	//
    271 	// * ChildHealthChecks: Amazon Route
    272 	// 53 resets ChildHealthChecks
    273 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ChildHealthChecks)
    274 	// to null.
    275 	//
    276 	// * FullyQualifiedDomainName: Route 53 resets FullyQualifiedDomainName
    277 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_UpdateHealthCheck.html#Route53-UpdateHealthCheck-request-FullyQualifiedDomainName).
    278 	// to null.
    279 	//
    280 	// * Regions: Route 53 resets the Regions
    281 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-Regions)
    282 	// list to the default set of regions.
    283 	//
    284 	// * ResourcePath: Route 53 resets
    285 	// ResourcePath
    286 	// (https://docs.aws.amazon.com/Route53/latest/APIReference/API_HealthCheckConfig.html#Route53-Type-HealthCheckConfig-ResourcePath)
    287 	// to null.
    288 	ResetElements []types.ResettableElementName
    289 
    290 	// The path that you want Amazon Route 53 to request when performing health checks.
    291 	// The path can be any value for which your endpoint will return an HTTP status
    292 	// code of 2xx or 3xx when the endpoint is healthy, for example the file
    293 	// /docs/route53-health-check.html. You can also include query string parameters,
    294 	// for example, /welcome.html?language=jp&login=y. Specify this value only if you
    295 	// want to change it.
    296 	ResourcePath *string
    297 
    298 	// If the value of Type is HTTP_STR_MATCH or HTTPS_STR_MATCH, the string that you
    299 	// want Amazon Route 53 to search for in the response body from the specified
    300 	// resource. If the string appears in the response body, Route 53 considers the
    301 	// resource healthy. (You can't change the value of Type when you update a health
    302 	// check.)
    303 	SearchString *string
    304 
    305 	noSmithyDocumentSerde
    306 }
    307 
    308 // A complex type that contains the response to the UpdateHealthCheck request.
    309 type UpdateHealthCheckOutput struct {
    310 
    311 	// A complex type that contains the response to an UpdateHealthCheck request.
    312 	//
    313 	// This member is required.
    314 	HealthCheck *types.HealthCheck
    315 
    316 	// Metadata pertaining to the operation's result.
    317 	ResultMetadata middleware.Metadata
    318 
    319 	noSmithyDocumentSerde
    320 }
    321 
    322 func (c *Client) addOperationUpdateHealthCheckMiddlewares(stack *middleware.Stack, options Options) (err error) {
    323 	err = stack.Serialize.Add(&awsRestxml_serializeOpUpdateHealthCheck{}, middleware.After)
    324 	if err != nil {
    325 		return err
    326 	}
    327 	err = stack.Deserialize.Add(&awsRestxml_deserializeOpUpdateHealthCheck{}, middleware.After)
    328 	if err != nil {
    329 		return err
    330 	}
    331 	if err = addSetLoggerMiddleware(stack, options); err != nil {
    332 		return err
    333 	}
    334 	if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
    335 		return err
    336 	}
    337 	if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
    338 		return err
    339 	}
    340 	if err = addResolveEndpointMiddleware(stack, options); err != nil {
    341 		return err
    342 	}
    343 	if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
    344 		return err
    345 	}
    346 	if err = addRetryMiddlewares(stack, options); err != nil {
    347 		return err
    348 	}
    349 	if err = addHTTPSignerV4Middleware(stack, options); err != nil {
    350 		return err
    351 	}
    352 	if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
    353 		return err
    354 	}
    355 	if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
    356 		return err
    357 	}
    358 	if err = addClientUserAgent(stack); err != nil {
    359 		return err
    360 	}
    361 	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
    362 		return err
    363 	}
    364 	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
    365 		return err
    366 	}
    367 	if err = addOpUpdateHealthCheckValidationMiddleware(stack); err != nil {
    368 		return err
    369 	}
    370 	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateHealthCheck(options.Region), middleware.Before); err != nil {
    371 		return err
    372 	}
    373 	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
    374 		return err
    375 	}
    376 	if err = addResponseErrorMiddleware(stack); err != nil {
    377 		return err
    378 	}
    379 	if err = addRequestResponseLogging(stack, options); err != nil {
    380 		return err
    381 	}
    382 	return nil
    383 }
    384 
    385 func newServiceMetadataMiddleware_opUpdateHealthCheck(region string) *awsmiddleware.RegisterServiceMetadata {
    386 	return &awsmiddleware.RegisterServiceMetadata{
    387 		Region:        region,
    388 		ServiceID:     ServiceID,
    389 		SigningName:   "route53",
    390 		OperationName: "UpdateHealthCheck",
    391 	}
    392 }