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 }