github.com/minamijoyo/terraform@v0.7.8-0.20161029001309-18b3736ba44b/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 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 VCL](https://docs.fastly.com/guides/vcl/uploading-custom-vcl) (must be enabled on your Fastly account): 90 91 ``` 92 resource "fastly_service_v1" "demo" { 93 name = "demofastly" 94 95 domain { 96 name = "demo.notexample.com" 97 comment = "demo" 98 } 99 100 backend { 101 address = "127.0.0.1" 102 name = "localhost" 103 port = 80 104 } 105 106 force_destroy = true 107 108 vcl { 109 name = "my_custom_main_vcl" 110 content = "${file("${path.module}/my_custom_main.vcl")}" 111 main = true 112 } 113 114 vcl { 115 name = "my_custom_library_vcl" 116 content = "${file("${path.module}/my_custom_library.vcl")}" 117 } 118 } 119 ``` 120 121 **Note:** For an AWS S3 Bucket, the Backend address is 122 `<domain>.s3-website-<region>.amazonaws.com`. The `default_host` attribute 123 should be set to `<bucket_name>.s3-website-<region>.amazonaws.com`. See the 124 Fastly documentation on [Amazon S3][fastly-s3]. 125 126 ## Argument Reference 127 128 The following arguments are supported: 129 130 * `name` - (Required) The unique name for the Service to create 131 * `domain` - (Required) A set of Domain names to serve as entry points for your 132 Service. Defined below 133 * `backend` - (Required) A set of Backends to service requests from your Domains. 134 Defined below 135 * `condition` - (Optional) A set of conditions to add logic to any basic 136 configuration object in this service. Defined below 137 * `cache_setting` - (Optional) A set of Cache Settings, allowing you to override 138 when an item is not to be cached based on an above `condition`. Defined below 139 * `gzip` - (Required) A set of gzip rules to control automatic gzipping of 140 content. Defined below 141 * `header` - (Optional) A set of Headers to manipulate for each request. Defined 142 below 143 * `default_host` - (Optional) The default hostname 144 * `default_ttl` - (Optional) The default Time-to-live (TTL) for requests 145 * `force_destroy` - (Optional) Services that are active cannot be destroyed. In 146 order to destroy the Service, set `force_destroy` to `true`. Default `false`. 147 * `request_setting` - (Optional) A set of Request modifiers. Defined below 148 * `s3logging` - (Optional) A set of S3 Buckets to send streaming logs too. 149 Defined below 150 * `vcl` - (Optional) A set of custom VCL configuration blocks. Note that the 151 ability to upload custom VCL code is not enabled by default for new Fastly 152 accounts (see the [Fastly documentation](https://docs.fastly.com/guides/vcl/uploading-custom-vcl) for details). 153 154 155 The `domain` block supports: 156 157 * `name` - (Required) The domain that this Service will respond to 158 * `comment` - (Optional) An optional comment about the Domain 159 160 The `backend` block supports: 161 162 * `name` - (Required, string) Name for this Backend. Must be unique to this Service 163 * `address` - (Required, string) An IPv4, hostname, or IPv6 address for the Backend 164 * `auto_loadbalance` - (Optional, boolean) Denote if this Backend should be 165 included in the pool of backends that requests are load balanced against. 166 Default `true` 167 * `between_bytes_timeout` - (Optional) How long to wait between bytes in milliseconds. Default `10000` 168 * `connect_timeout` - (Optional) How long to wait for a timeout in milliseconds. 169 Default `1000` 170 * `error_threshold` - (Optional) Number of errors to allow before the Backend is marked as down. Default `0` 171 * `first_byte_timeout` - (Optional) How long to wait for the first bytes in milliseconds. Default `15000` 172 * `max_conn` - (Optional) Maximum number of connections for this Backend. 173 Default `200` 174 * `port` - (Optional) The port number Backend responds on. Default `80` 175 * `ssl_check_cert` - (Optional) Be strict on checking SSL certs. Default `true` 176 * `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` 177 178 The `condition` block supports allows you to add logic to any basic configuration 179 object in a service. See Fastly's documentation 180 ["About Conditions"](https://docs.fastly.com/guides/conditions/about-conditions) 181 for more detailed information on using Conditions. The Condition `name` can be 182 used in the `request_condition`, `response_condition`, or 183 `cache_condition` attributes of other block settings 184 185 * `name` - (Required) A unique name of the condition 186 * `statement` - (Required) The statement used to determine if the condition is met 187 * `priority` - (Required) A number used to determine the order in which multiple 188 conditions execute. Lower numbers execute first 189 * `type` - (Required) Type of the condition, either `REQUEST` (req), `RESPONSE` 190 (req, resp), or `CACHE` (req, beresp) 191 192 The `cache_setting` block supports: 193 194 * `name` - (Required) A unique name to label this Cache Setting 195 * `action` - (Required) One of `cache`, `pass`, or `restart`, as defined 196 on Fastly's documentation under ["Caching action descriptions"](https://docs.fastly.com/guides/performance-tuning/controlling-caching#caching-action-descriptions) 197 * `cache_condition` - (Required) Name of the condition used to test whether this settings object should be used. 198 This Condition must be of type `CACHE` 199 * `stale_ttl` - (Optional) Max "Time To Live" for stale (unreachable) objects. 200 Default `300` 201 * `ttl` - (Optional) The "Time To Live" for the object 202 203 The `gzip` block supports: 204 205 * `name` - (Required) A unique name 206 * `content_types` - (Optional) content-type for each type of content you wish to 207 have dynamically gzipped. Ex: `["text/html", "text/css"]` 208 * `extensions` - (Optional) File extensions for each file type to dynamically 209 gzip. Ex: `["css", "js"]` 210 211 212 The `Header` block supports adding, removing, or modifying Request and Response 213 headers. See Fastly's documentation on 214 [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 215 of the properties below. 216 217 * `name` - (Required) A unique name to refer to this header attribute 218 * `action` - (Required) The Header manipulation action to take; must be one of 219 `set`, `append`, `delete`, `regex`, or `regex_repeat` 220 * `type` - (Required) The Request type to apply the selected Action on; must be one of `request`, `fetch`, `cache` or `response` 221 * `destination` - (Required) The name of the header that is going to be affected 222 by the Action 223 * `ignore_if_set` - (Optional) Do not add the header if it is already present. 224 (Only applies to `set` action.). Default `false` 225 * `source` - (Optional) Variable to be used as a source for the header content 226 (Does not apply to `delete` action.) 227 * `regex` - (Optional) Regular expression to use (Only applies to `regex` and `regex_repeat` actions.) 228 * `substitution` - (Optional) Value to substitute in place of regular expression. (Only applies to `regex` and `regex_repeat`.) 229 * `priority` - (Optional) Lower priorities execute first. (Default: `100`.) 230 231 The `request_setting` block allow you to customize Fastly's request handling, by 232 defining behavior that should change based on a predefined `condition`: 233 234 * `name` - (Required) The domain that this request setting 235 * `request_condition` - (Required) The name of the corresponding `condition` to 236 determin if this request setting should be applied. The `request_condition` must 237 match the name of a defined `condition` 238 * `max_stale_age` - (Optional) How old an object is allowed to be to serve 239 stale-if-error or stale-while-revalidate, in seconds. Default `60` 240 * `force_miss` - (Optional) Force a cache miss for the request. If specfified, 241 can be `true` or `false`. 242 * `force_ssl` - (Optional) Forces the request use SSL (redirects a non-SSL to SSL) 243 * `action` - (Optional) Allows you to terminate request handling and immediately 244 perform an action. When set it can be `lookup` or `pass` (ignore the cache completely) 245 * `bypass_busy_wait` - (Optional) Disable collapsed forwarding, so you don't wait 246 for other objects to origin 247 * `hash_keys` - (Optional) Comma separated list of varnish request object fields 248 that should be in the hash key 249 * `xff` - (Optional) X-Forwarded-For -- should be `clear`, `leave`, `append`, 250 `append_all`, or `overwrite`. Default `append` 251 * `timer_support` - (Optional) Injects the X-Timer info into the request for 252 viewing origin fetch durations 253 * `geo_headers` - (Optional) Injects Fastly-Geo-Country, Fastly-Geo-City, and 254 Fastly-Geo-Region into the request headers 255 * `default_host` - (Optional) Sets the host header 256 257 The `s3logging` block supports: 258 259 * `name` - (Required) A unique name to identify this S3 Logging Bucket 260 * `bucket_name` - (Optional) An optional comment about the Domain 261 * `s3_access_key` - (Required) AWS Access Key of an account with the required 262 permissions to post logs. It is **strongly** recommended you create a separate 263 IAM user with permissions to only operate on this Bucket. This key will be 264 not be encrypted. You can provide this key via an environment variable, `FASTLY_S3_ACCESS_KEY` 265 * `s3_secret_key` - (Required) AWS Secret Key of an account with the required 266 permissions to post logs. It is **strongly** recommended you create a separate 267 IAM user with permissions to only operate on this Bucket. This secret will be 268 not be encrypted. You can provide this secret via an environment variable, `FASTLY_S3_SECRET_KEY` 269 * `path` - (Optional) Path to store the files. Must end with a trailing slash. 270 If this field is left empty, the files will be saved in the bucket's root path. 271 * `domain` - (Optional) If you created the S3 bucket outside of `us-east-1`, 272 then specify the corresponding bucket endpoint. Ex: `s3-us-west-2.amazonaws.com` 273 * `period` - (Optional) How frequently the logs should be transferred, in 274 seconds. Default `3600` 275 * `gzip_level` - (Optional) Level of GZIP compression, from `0-9`. `0` is no 276 compression. `1` is fastest and least compressed, `9` is slowest and most 277 compressed. Default `0` 278 * `format` - (Optional) Apache-style string or VCL variables to use for log formatting. Default 279 Apache Common Log format (`%h %l %u %t %r %>s`) 280 * `timestamp_format` - (Optional) `strftime` specified timestamp formatting (default `%Y-%m-%dT%H:%M:%S.000`). 281 * `request_condition` - (Optional) The VCL request condition to check if this 282 Request Setting should be applied. For detailed information about Conditionals, 283 see [Fastly's Documentation on Conditionals][fastly-conditionals] 284 285 The `vcl` block supports: 286 287 * `name` - (Required) A unique name for this configuration block 288 * `content` - (Required) The custom VCL code to upload. 289 * `main` - (Optional) If `true`, use this block as the main configuration. If 290 `false`, use this block as an includable library. Only a single VCL block can be 291 marked as the main block. Default is `false`. 292 293 ## Attributes Reference 294 295 The following attributes are exported: 296 297 * `id` - The ID of the Service 298 * `name` – Name of this service 299 * `active_version` - The currently active version of your Fastly Service 300 * `domain` – Set of Domains. See above for details 301 * `backend` – Set of Backends. See above for details 302 * `header` – Set of Headers. See above for details 303 * `s3logging` – Set of S3 Logging configurations. See above for details 304 * `vcl` – Set of custom VCL configurations. See above for details 305 * `default_host` – Default host specified 306 * `default_ttl` - Default TTL 307 * `force_destroy` - Force the destruction of the Service on delete 308 309 310 [fastly-s3]: https://docs.fastly.com/guides/integrations/amazon-s3 311 [fastly-cname]: https://docs.fastly.com/guides/basic-setup/adding-cname-records 312 [fastly-conditionals]: https://docs.fastly.com/guides/conditions/using-conditions