src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

api_op_UpdateHealthCheck.go (20535B)


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