Skip to content

Latest commit

 

History

History
178 lines (142 loc) · 7.1 KB

File metadata and controls

178 lines (142 loc) · 7.1 KB
page_title subcategory description
http Data Source - terraform-provider-http
The http data source makes an HTTP GET request to the given URL and exports information about the response. The given URL may be either an http or https URL. This resource will issue a warning if the result is not UTF-8 encoded. ~> Important Although https URLs can be used, there is currently no mechanism to authenticate the remote server except for general verification of the server certificate's chain of trust. Data retrieved from servers not under your control should be treated as untrustworthy. By default, there are no retries. Configuring the retry block will result in retries if an error is returned by the client (e.g., connection errors) or if a 5xx-range (except 501) status code is received. For further details see go-retryablehttp https://pkg.go.dev/github.com/hashicorp/go-retryablehttp.

http (Data Source)

The http data source makes an HTTP GET request to the given URL and exports information about the response.

The given URL may be either an http or https URL. This resource will issue a warning if the result is not UTF-8 encoded.

~> Important Although https URLs can be used, there is currently no mechanism to authenticate the remote server except for general verification of the server certificate's chain of trust. Data retrieved from servers not under your control should be treated as untrustworthy.

By default, there are no retries. Configuring the retry block will result in retries if an error is returned by the client (e.g., connection errors) or if a 5xx-range (except 501) status code is received. For further details see go-retryablehttp.

Example Usage

# The following example shows how to issue an HTTP GET request supplying
# an optional request header.
data "http" "example" {
  url = "https://checkpoint-api.hashicorp.com/v1/check/terraform"

  # Optional request headers
  request_headers = {
    Accept = "application/json"
  }
}

# The following example shows how to issue an HTTP HEAD request.
data "http" "example_head" {
  url    = "https://checkpoint-api.hashicorp.com/v1/check/terraform"
  method = "HEAD"
}

# The following example shows how to issue an HTTP POST request
# supplying an optional request body.
data "http" "example_post" {
  url    = "https://checkpoint-api.hashicorp.com/v1/check/terraform"
  method = "POST"

  # Optional request body
  request_body = "request body"
}

Usage with Postcondition

Precondition and Postcondition checks are available with Terraform v1.2.0 and later.

data "http" "example" {
  url = "https://checkpoint-api.hashicorp.com/v1/check/terraform"

  # Optional request headers
  request_headers = {
    Accept = "application/json"
  }

  lifecycle {
    postcondition {
      condition     = contains([201, 204], self.status_code)
      error_message = "Status code invalid"
    }
  }
}

Usage with Precondition

Precondition and Postcondition checks are available with Terraform v1.2.0 and later.

data "http" "example" {
  url = "https://checkpoint-api.hashicorp.com/v1/check/terraform"

  # Optional request headers
  request_headers = {
    Accept = "application/json"
  }
}

resource "random_uuid" "example" {
  lifecycle {
    precondition {
      condition     = contains([201, 204], data.http.example.status_code)
      error_message = "Status code invalid"
    }
  }
}

Usage with Provisioner

Failure Behaviour can be leveraged within a provisioner in order to raise an error and stop applying.

data "http" "example" {
  url = "https://checkpoint-api.hashicorp.com/v1/check/terraform"

  # Optional request headers
  request_headers = {
    Accept = "application/json"
  }
}

resource "null_resource" "example" {
  # On success, this will attempt to execute the true command in the
  # shell environment running terraform.
  # On failure, this will attempt to execute the false command in the
  # shell environment running terraform.
  provisioner "local-exec" {
    command = contains([201, 204], data.http.example.status_code)
  }
}

Schema

Required

  • url (String) The URL for the request. Supported schemes are http and https.

Optional

  • ca_cert_pem (String) Certificate Authority (CA) in PEM (RFC 1421) format.
  • client_cert_pem (String) Client certificate in PEM (RFC 1421) format.
  • client_key_pem (String) Client key in PEM (RFC 1421) format.
  • insecure (Boolean) Disables verification of the server's certificate chain and hostname. Defaults to false
  • method (String) The HTTP Method for the request. Allowed methods are a subset of methods defined in RFC7231 namely, GET, HEAD, and POST. POST support is only intended for read-only URLs, such as submitting a search.
  • request_body (String) The request body as a string.
  • request_headers (Map of String) A map of request header field names and values.
  • request_timeout_ms (Number) The request timeout in milliseconds.
  • retry (Block, Optional) Retry request configuration. By default there are no retries. Configuring this block will result in retries if an error is returned by the client (e.g., connection errors) or if a 5xx-range (except 501) status code is received. For further details see go-retryablehttp. (see below for nested schema)
  • sensitive_request_headers (Map of String, Sensitive) A map of request header field names and values regarded as sensitive. The header values are masked in CLI output, as well as Terraform state.

Read-Only

  • body (String, Deprecated) The response body returned as a string. NOTE: This is deprecated, use response_body instead.
  • id (String) The URL used for the request.
  • response_body (String) The response body returned as a string.
  • response_body_base64 (String) The response body encoded as base64 (standard) as defined in RFC 4648.
  • response_headers (Map of String) A map of response header field names and values. Duplicate headers are concatenated according to RFC2616.
  • status_code (Number) The HTTP response status code.

Nested Schema for retry

Optional:

  • attempts (Number) The number of times the request is to be retried. For example, if 2 is specified, the request will be tried a maximum of 3 times.
  • max_delay_ms (Number) The maximum delay between retry requests in milliseconds.
  • min_delay_ms (Number) The minimum delay between retry requests in milliseconds.