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