github.com/nevins-b/terraform@v0.3.8-0.20170215184714-bbae22007d5a/website/source/docs/providers/fastly/r/service_v1.html.markdown (about)

     1  ---
     2  layout: "fastly"
     3  page_title: "Fastly: service_v1"
     4  sidebar_current: "docs-fastly-resource-service-v1"
     5  description: |-
     6    Provides an Fastly Service
     7  ---
     8  
     9  # fastly\_service\_v1
    10  
    11  Provides a Fastly Service, representing the configuration for a website, app,
    12  API, or anything else to be served through Fastly. A Service encompasses Domains
    13  and Backends.
    14  
    15  The Service resource requires a domain name that is correctly set up to direct
    16  traffic to the Fastly service. See Fastly's guide on [Adding CNAME Records][fastly-cname]
    17  on their documentation site for guidance.
    18  
    19  ## Example Usage
    20  
    21  Basic usage:
    22  
    23  ```
    24  resource "fastly_service_v1" "demo" {
    25    name = "demofastly"
    26  
    27    domain {
    28      name    = "demo.notexample.com"
    29      comment = "demo"
    30    }
    31  
    32    backend {
    33      address = "127.0.0.1"
    34      name    = "localhost"
    35      port    = 80
    36    }
    37  
    38    force_destroy = true
    39  }
    40  
    41  ```
    42  
    43  Basic usage with an Amazon S3 Website and that removes the `x-amz-request-id` header:
    44  
    45  ```
    46  resource "fastly_service_v1" "demo" {
    47    name = "demofastly"
    48  
    49    domain {
    50      name    = "demo.notexample.com"
    51      comment = "demo"
    52    }
    53  
    54    backend {
    55      address = "demo.notexample.com.s3-website-us-west-2.amazonaws.com"
    56      name    = "AWS S3 hosting"
    57      port    = 80
    58    }
    59  
    60    header {
    61      destination = "http.x-amz-request-id"
    62      type        = "cache"
    63      action      = "delete"
    64      name        = "remove x-amz-request-id"
    65    }
    66  
    67    gzip {
    68      name          = "file extensions and content types"
    69      extensions    = ["css", "js"]
    70      content_types = ["text/html", "text/css"]
    71    }
    72  
    73    default_host = "${aws_s3_bucket.website.name}.s3-website-us-west-2.amazonaws.com"
    74  
    75    force_destroy = true
    76  }
    77  
    78  resource "aws_s3_bucket" "website" {
    79    bucket = "demo.notexample.com"
    80    acl    = "public-read"
    81  
    82    website {
    83      index_document = "index.html"
    84      error_document = "error.html"
    85    }
    86  }
    87  ```
    88  
    89  Basic usage with [custom
    90  VCL](https://docs.fastly.com/guides/vcl/uploading-custom-vcl) (must be
    91  enabled on your Fastly account):
    92  
    93  ```
    94  resource "fastly_service_v1" "demo" {
    95    name = "demofastly"
    96  
    97    domain {
    98      name    = "demo.notexample.com"
    99      comment = "demo"
   100    }
   101  
   102    backend {
   103      address = "127.0.0.1"
   104      name    = "localhost"
   105      port    = 80
   106    }
   107  
   108    force_destroy = true
   109  
   110    vcl {
   111      name = "my_custom_main_vcl"
   112      content = "${file("${path.module}/my_custom_main.vcl")}"
   113      main = true
   114    }
   115  
   116    vcl {
   117      name = "my_custom_library_vcl"
   118      content = "${file("${path.module}/my_custom_library.vcl")}"
   119    }
   120  }
   121  ```
   122  
   123  -> **Note:** For an AWS S3 Bucket, the Backend address is
   124  `<domain>.s3-website-<region>.amazonaws.com`. The `default_host` attribute
   125  should be set to `<bucket_name>.s3-website-<region>.amazonaws.com`. See the
   126  Fastly documentation on [Amazon S3][fastly-s3].
   127  
   128  ## Argument Reference
   129  
   130  The following arguments are supported:
   131  
   132  * `name` - (Required) The unique name for the Service to create.
   133  * `domain` - (Required) A set of Domain names to serve as entry points for your
   134  Service. Defined below.
   135  * `backend` - (Required) A set of Backends to service requests from your Domains.
   136  Defined below.
   137  * `condition` - (Optional) A set of conditions to add logic to any basic
   138  configuration object in this service. Defined below.
   139  * `cache_setting` - (Optional) A set of Cache Settings, allowing you to override
   140  when an item is not to be cached based on an above `condition`. Defined below
   141  * `gzip` - (Required) A set of gzip rules to control automatic gzipping of
   142  content. Defined below.
   143  * `header` - (Optional) A set of Headers to manipulate for each request. Defined
   144  below.
   145  * `healthcheck` - (Optional) Automated healthchecks on the cache that can change how fastly interacts with the cache based on its health.
   146  * `default_host` - (Optional) The default hostname.
   147  * `default_ttl` - (Optional) The default Time-to-live (TTL) for
   148  requests.
   149  * `force_destroy` - (Optional) Services that are active cannot be destroyed. In
   150  order to destroy the Service, set `force_destroy` to `true`. Default `false`.
   151  * `request_setting` - (Optional) A set of Request modifiers. Defined below
   152  * `s3logging` - (Optional) A set of S3 Buckets to send streaming logs too.
   153  Defined below.
   154  * `papertrail` - (Optional) A Papertrail endpoint to send streaming logs too.
   155  Defined below.
   156  * `vcl` - (Optional) A set of custom VCL configuration blocks. The
   157  ability to upload custom VCL code is not enabled by default for new Fastly
   158  accounts (see the [Fastly documentation](https://docs.fastly.com/guides/vcl/uploading-custom-vcl) for details).
   159  
   160  The `domain` block supports:
   161  
   162  * `name` - (Required) The domain to which this Service will respond.
   163  * `comment` - (Optional) An optional comment about the Domain.
   164  
   165  The `backend` block supports:
   166  
   167  * `name` - (Required, string) Name for this Backend. Must be unique to this Service.
   168  * `address` - (Required, string) An IPv4, hostname, or IPv6 address for the Backend.
   169  * `auto_loadbalance` - (Optional, boolean) Denotes if this Backend should be
   170  included in the pool of backends that requests are load balanced against.
   171  Default `true`.
   172  * `between_bytes_timeout` - (Optional) How long to wait between bytes in milliseconds. Default `10000`.
   173  * `connect_timeout` - (Optional) How long to wait for a timeout in milliseconds.
   174  Default `1000`
   175  * `error_threshold` - (Optional) Number of errors to allow before the Backend is marked as down. Default `0`.
   176  * `first_byte_timeout` - (Optional) How long to wait for the first bytes in milliseconds. Default `15000`.
   177  * `max_conn` - (Optional) Maximum number of connections for this Backend.
   178  Default `200`.
   179  * `port` - (Optional) The port number on which the Backend responds. Default `80`.
   180  * `request_condition` - (Optional, string) Name of already defined `condition`, which if met, will select this backend during a request.
   181  * `ssl_check_cert` - (Optional) Be strict about checking SSL certs. Default `true`.
   182  * `ssl_hostname` - (Optional) Used for both SNI during the TLS handshake and to validate the cert.
   183  * `shield` - (Optional) The POP of the shield designated to reduce inbound load.
   184  * `weight` - (Optional) The [portion of traffic](https://docs.fastly.com/guides/performance-tuning/load-balancing-configuration.html#how-weight-affects-load-balancing) to send to this Backend. Each Backend receives `weight / total` of the traffic. Default `100`.
   185  
   186  The `condition` block supports allows you to add logic to any basic configuration
   187  object in a service. See Fastly's documentation
   188  ["About Conditions"](https://docs.fastly.com/guides/conditions/about-conditions)
   189  for more detailed information on using Conditions. The Condition `name` can be
   190  used in the `request_condition`, `response_condition`, or
   191  `cache_condition` attributes of other block settings.
   192  
   193  * `name` - (Required) The unique name for the condition.
   194  * `statement` - (Required) The statement used to determine if the condition is met.
   195  * `priority` - (Required) A number used to determine the order in which multiple
   196  conditions execute. Lower numbers execute first.
   197  * `type` - (Required) Type of condition, either `REQUEST` (req), `RESPONSE`
   198  (req, resp), or `CACHE` (req, beresp).
   199  
   200  The `cache_setting` block supports:
   201  
   202  * `name` - (Required) Unique name for this Cache Setting.
   203  * `action` - (Required) One of `cache`, `pass`, or `restart`, as defined
   204  on Fastly's documentation under ["Caching action descriptions"](https://docs.fastly.com/guides/performance-tuning/controlling-caching#caching-action-descriptions).
   205  * `cache_condition` - (Required) Name of already defined `condition` used to test whether this settings object should be used. This `condition` must be of type `CACHE`.
   206  * `stale_ttl` - (Optional) Max "Time To Live" for stale (unreachable) objects.
   207  Default `300`.
   208  * `ttl` - (Optional) The Time-To-Live (TTL) for the object.
   209  
   210  The `gzip` block supports:
   211  
   212  * `name` - (Required) A unique name.
   213  * `content_types` - (Optional) The content-type for each type of content you wish to
   214  have dynamically gzip'ed. Example: `["text/html", "text/css"]`.
   215  * `extensions` - (Optional) File extensions for each file type to dynamically
   216  gzip. Example: `["css", "js"]`.
   217  * `cache_condition` - (Optional) Name of already defined `condition` controlling when this gzip configuration applies. This `condition` must be of type `CACHE`. For detailed information about Conditionals,
   218  see [Fastly's Documentation on Conditionals][fastly-conditionals].
   219  
   220  
   221  The `Header` block supports adding, removing, or modifying Request and Response
   222  headers. See Fastly's documentation on
   223  [Adding or modifying headers on HTTP requests and responses](https://docs.fastly.com/guides/basic-configuration/adding-or-modifying-headers-on-http-requests-and-responses#field-description-table) for more detailed information on any of the properties below.
   224  
   225  * `name` - (Required) Unique name for this header attribute.
   226  * `action` - (Required) The Header manipulation action to take; must be one of
   227  `set`, `append`, `delete`, `regex`, or `regex_repeat`.
   228  * `type` - (Required) The Request type on which to apply the selected Action; must be one of `request`, `fetch`, `cache` or `response`.
   229  * `destination` - (Required) The name of the header that is going to be affected by the Action.
   230  * `ignore_if_set` - (Optional) Do not add the header if it is already present. (Only applies to the `set` action.). Default `false`.
   231  * `source` - (Optional) Variable to be used as a source for the header
   232  content. (Does not apply to the `delete` action.)
   233  * `regex` - (Optional) Regular expression to use (Only applies to the `regex` and `regex_repeat` actions.)
   234  * `substitution` - (Optional) Value to substitute in place of regular expression. (Only applies to the `regex` and `regex_repeat` actions.)
   235  * `priority` - (Optional) Lower priorities execute first. Default: `100`.
   236  * `request_condition` - (Optional) Name of already defined `condition` to apply. This `condition` must be of type `REQUEST`.
   237  * `cache_condition` - (Optional) Name of already defined `condition` to apply. This `condition` must be of type `CACHE`.
   238  * `response_condition` - (Optional) Name of already defined `condition` to apply. This `condition` must be of type `RESPONSE`. For detailed information about Conditionals,
   239  see [Fastly's Documentation on Conditionals][fastly-conditionals].
   240  
   241  The `healthcheck` block supports:
   242  
   243  * `name` - (Required) A unique name to identify this Healthcheck.
   244  * `host` - (Required) Address of the host to check.
   245  * `path` - (Required) The path to check.
   246  * `check_interval` - (Optional) How often to run the Healthcheck in milliseconds. Default `5000`.
   247  * `expected_response` - (Optional) The status code expected from the host. Default `200`.
   248  * `http_version` - (Optional) Whether to use version 1.0 or 1.1 HTTP. Default `1.1`.
   249  * `initial` - (Optional) When loading a config, the initial number of probes to be seen as OK. Default `2`.
   250  * `method` - (Optional) Which HTTP method to use. Default `HEAD`.
   251  * `threshold` - (Optional) How many Healthchecks must succeed to be considered healthy. Default `3`.
   252  * `timeout` - (Optional) Timeout in milliseconds. Default `500`.
   253  * `window` - (Optional) The number of most recent Healthcheck queries to keep for this Healthcheck. Default `5`.
   254  
   255  The `request_setting` block allow you to customize Fastly's request handling, by
   256  defining behavior that should change based on a predefined `condition`:
   257  
   258  * `name` - (Required) The domain for this request setting.
   259  * `request_condition` - (Required) Name of already defined `condition` to
   260  determine if this request setting should be applied.
   261  * `max_stale_age` - (Optional) How old an object is allowed to be to serve
   262  `stale-if-error` or `stale-while-revalidate`, in seconds. Default `60`.
   263  * `force_miss` - (Optional) Force a cache miss for the request. If specified,
   264  can be `true` or `false`.
   265  * `force_ssl` - (Optional) Forces the request to use SSL (Redirects a non-SSL request to SSL).
   266  * `action` - (Optional) Allows you to terminate request handling and immediately
   267  perform an action. When set it can be `lookup` or `pass` (Ignore the cache completely).
   268  * `bypass_busy_wait` - (Optional) Disable collapsed forwarding, so you don't wait
   269  for other objects to origin.
   270  * `hash_keys` - (Optional) Comma separated list of varnish request object fields
   271  that should be in the hash key.
   272  * `xff` - (Optional) X-Forwarded-For, should be `clear`, `leave`, `append`,
   273  `append_all`, or `overwrite`. Default `append`.
   274  * `timer_support` - (Optional) Injects the X-Timer info into the request for
   275  viewing origin fetch durations.
   276  * `geo_headers` - (Optional) Injects Fastly-Geo-Country, Fastly-Geo-City, and
   277  Fastly-Geo-Region into the request headers.
   278  * `default_host` - (Optional) Sets the host header.
   279  
   280  The `s3logging` block supports:
   281  
   282  * `name` - (Required) A unique name to identify this S3 Logging Bucket.
   283  * `bucket_name` - (Optional) An optional comment about the Domain.
   284  * `s3_access_key` - (Required) AWS Access Key of an account with the required
   285  permissions to post logs. It is **strongly** recommended you create a separate
   286  IAM user with permissions to only operate on this Bucket. This key will be
   287  not be encrypted. You can provide this key via an environment variable, `FASTLY_S3_ACCESS_KEY`.
   288  * `s3_secret_key` - (Required) AWS Secret Key of an account with the required
   289  permissions to post logs. It is **strongly** recommended you create a separate
   290  IAM user with permissions to only operate on this Bucket. This secret will be
   291  not be encrypted. You can provide this secret via an environment variable, `FASTLY_S3_SECRET_KEY`.
   292  * `path` - (Optional) Path to store the files. Must end with a trailing slash.
   293  If this field is left empty, the files will be saved in the bucket's root path.
   294  * `domain` - (Optional) If you created the S3 bucket outside of `us-east-1`,
   295  then specify the corresponding bucket endpoint. Example: `s3-us-west-2.amazonaws.com`.
   296  * `period` - (Optional) How frequently the logs should be transferred, in
   297  seconds. Default `3600`.
   298  * `gzip_level` - (Optional) Level of GZIP compression, from `0-9`. `0` is no
   299  compression. `1` is fastest and least compressed, `9` is slowest and most
   300  compressed. Default `0`.
   301  * `format` - (Optional) Apache-style string or VCL variables to use for log formatting. Defaults to Apache Common Log format (`%h %l %u %t %r %>s`)
   302  * `timestamp_format` - (Optional) `strftime` specified timestamp formatting (default `%Y-%m-%dT%H:%M:%S.000`).
   303  * `request_condition` - (Optional) Name of already defined `condition` to apply. This `condition` must be of type `REQUEST`. For detailed information about Conditionals,
   304  see [Fastly's Documentation on Conditionals][fastly-conditionals].
   305  
   306  The `papertrail` block supports:
   307  
   308  * `name` - (Required) A unique name to identify this Papertrail endpoint.
   309  * `address` - (Required) The address of the Papertrail endpoint.
   310  * `port` - (Required) The port associated with the address where the Papertrail endpoint can be accessed.
   311  * `format` - (Optional) Apache-style string or VCL variables to use for log formatting. Defaults to Apache Common Log format (`%h %l %u %t %r %>s`)
   312  * `request_condition` - (Optional) Name of already defined `condition` to apply. This `condition` must be of type `REQUEST`. For detailed information about Conditionals,
   313  see [Fastly's Documentation on Conditionals][fastly-conditionals].
   314  
   315  The `vcl` block supports:
   316  
   317  * `name` - (Required) A unique name for this configuration block.
   318  * `content` - (Required) The custom VCL code to upload.
   319  * `main` - (Optional) If `true`, use this block as the main configuration. If
   320  `false`, use this block as an includable library. Only a single VCL block can be
   321  marked as the main block. Default is `false`.
   322  
   323  ## Attributes Reference
   324  
   325  The following attributes are exported:
   326  
   327  * `id` - The ID of the Service.
   328  * `name` – Name of this service.
   329  * `active_version` - The currently active version of your Fastly
   330  Service.
   331  * `domain` – Set of Domains. See above for details.
   332  * `backend` – Set of Backends. See above for details.
   333  * `header` – Set of Headers. See above for details.
   334  * `s3logging` – Set of S3 Logging configurations. See above for details.
   335  * `papertrail` – Set of Papertrail configurations. See above for details.
   336  * `vcl` – Set of custom VCL configurations. See above for details.
   337  * `default_host` – Default host specified.
   338  * `default_ttl` - Default TTL.
   339  * `force_destroy` - Force the destruction of the Service on delete.
   340  
   341  [fastly-s3]: https://docs.fastly.com/guides/integrations/amazon-s3
   342  [fastly-cname]: https://docs.fastly.com/guides/basic-setup/adding-cname-records
   343  [fastly-conditionals]: https://docs.fastly.com/guides/conditions/using-conditions