github.com/renier/terraform@v0.7.8-0.20161024133817-eb8a9ef5471a/website/source/docs/providers/aws/r/cloudfront_distribution.html.markdown (about) 1 --- 2 layout: "aws" 3 page_title: "AWS: cloudfront_distribution" 4 sidebar_current: "docs-aws-resource-cloudfront-distribution" 5 description: |- 6 Provides a CloudFront web distribution resource. 7 --- 8 9 # aws\_cloudfront\_distribution 10 11 Creates an Amazon CloudFront web distribution. 12 13 For information about CloudFront distributions, see the 14 [Amazon CloudFront Developer Guide][1]. For specific information about creating 15 CloudFront web distributions, see the [POST Distribution][2] page in the Amazon 16 CloudFront API Reference. 17 18 ~> **NOTE:** CloudFront distributions take about 15 minutes to a deployed state 19 after creation or modification. During this time, deletes to resources will be 20 blocked. If you need to delete a distribution that is enabled and you do not 21 want to wait, you need to use the `retain_on_delete` flag. 22 23 ## Example Usage 24 25 The following example below creates a CloudFront distribution with an S3 origin. 26 27 ``` 28 resource "aws_cloudfront_distribution" "s3_distribution" { 29 origin { 30 domain_name = "mybucket.s3.amazonaws.com" 31 origin_id = "myS3Origin" 32 33 s3_origin_config { 34 origin_access_identity = "origin-access-identity/cloudfront/ABCDEFG1234567" 35 } 36 } 37 38 enabled = true 39 comment = "Some comment" 40 default_root_object = "index.html" 41 42 logging_config { 43 include_cookies = false 44 bucket = "mylogs.s3.amazonaws.com" 45 prefix = "myprefix" 46 } 47 48 aliases = ["mysite.example.com", "yoursite.example.com"] 49 50 default_cache_behavior { 51 allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"] 52 cached_methods = ["GET", "HEAD"] 53 target_origin_id = "myS3Origin" 54 55 forwarded_values { 56 query_string = false 57 58 cookies { 59 forward = "none" 60 } 61 } 62 63 viewer_protocol_policy = "allow-all" 64 min_ttl = 0 65 default_ttl = 3600 66 max_ttl = 86400 67 } 68 69 price_class = "PriceClass_200" 70 71 restrictions { 72 geo_restriction { 73 restriction_type = "whitelist" 74 locations = ["US", "CA", "GB", "DE"] 75 } 76 } 77 78 viewer_certificate { 79 cloudfront_default_certificate = true 80 } 81 } 82 ``` 83 84 ## Argument Reference 85 86 The CloudFront distribution argument layout is a complex structure composed 87 of several sub-resources - these resources are laid out below. 88 89 ### Top-Level Arguments 90 91 * `aliases` (Optional) - Extra CNAMEs (alternate domain names), if any, for 92 this distribution. 93 94 * `cache_behavior` (Optional) - A [cache behavior](#cache-behavior-arguments) 95 resource for this distribution (multiples allowed). 96 97 * `comment` (Optional) - Any comments you want to include about the 98 distribution. 99 100 * `custom_error_response` (Optional) - One or more [custom error 101 response](#custom-error-response-arguments) elements (multiples allowed). 102 103 * `default_cache_behavior` (Required) - The [default cache 104 behavior](#default-cache-behavior-arguments) for this distribution (maximum 105 one). 106 107 * `default_root_object` (Optional) - The object that you want CloudFront to 108 return (for example, index.html) when an end user requests the root URL. 109 110 * `enabled` (Required) - Whether the distribution is enabled to accept end 111 user requests for content. 112 113 * `http_version` (Optional) - The maximum HTTP version to support on the 114 distribution. Allowed values are `http1.1` and `http2`. The default is 115 `http2`. 116 117 * `logging_config` (Optional) - The [logging 118 configuration](#logging-config-arguments) that controls how logs are written 119 to your distribution (maximum one). 120 121 * `origin` (Required) - One or more [origins](#origin-arguments) for this 122 distribution (multiples allowed). 123 124 * `price_class` (Optional) - The price class for this distribution. One of 125 `PriceClass_All`, `PriceClass_200`, `PriceClass_100` 126 127 * `restrictions` (Required) - The [restriction 128 configuration](#restrictions-arguments) for this distribution (maximum one). 129 130 * `viewer_certificate` (Required) - The [SSL 131 configuration](#viewer-certificate-arguments) for this distribution (maximum 132 one). 133 134 * `web_acl_id` (Optional) - If you're using AWS WAF to filter CloudFront 135 requests, the Id of the AWS WAF web ACL that is associated with the 136 distribution. 137 138 * `retain_on_delete` (Optional) - Disables the distribution instead of 139 deleting it when destroying the resource through Terraform. If this is set, 140 the distribution needs to be deleted manually afterwards. Default: `false`. 141 142 #### Cache Behavior Arguments 143 144 * `allowed_methods` (Required) - Controls which HTTP methods CloudFront 145 processes and forwards to your Amazon S3 bucket or your custom origin. 146 147 * `cached_methods` (Required) - Controls whether CloudFront caches the 148 response to requests using the specified HTTP methods. 149 150 * `compress` (Optional) - Whether you want CloudFront to automatically 151 compress content for web requests that include `Accept-Encoding: gzip` in 152 the request header (default: `false`). 153 154 * `default_ttl` (Required) - The default amount of time (in seconds) that an 155 object is in a CloudFront cache before CloudFront forwards another request 156 in the absence of an `Cache-Control max-age` or `Expires` header. 157 158 * `forwarded_values` (Required) - The [forwarded values 159 configuration](#forwarded-values-arguments) that specifies how CloudFront 160 handles query strings, cookies and headers (maximum one). 161 162 * `max_ttl` (Required) - The maximum amount of time (in seconds) that an 163 object is in a CloudFront cache before CloudFront forwards another request 164 to your origin to determine whether the object has been updated. Only 165 effective in the presence of `Cache-Control max-age`, `Cache-Control 166 s-maxage`, and `Expires` headers. 167 168 * `min_ttl` (Required) - The minimum amount of time that you want objects to 169 stay in CloudFront caches before CloudFront queries your origin to see 170 whether the object has been updated. 171 172 * `path_pattern` (Required) - The pattern (for example, `images/*.jpg)` that 173 specifies which requests you want this cache behavior to apply to. 174 175 * `smooth_streaming` (Optional) - Indicates whether you want to distribute 176 media files in Microsoft Smooth Streaming format using the origin that is 177 associated with this cache behavior. 178 179 * `target_origin_id` (Required) - The value of ID for the origin that you want 180 CloudFront to route requests to when a request matches the path pattern 181 either for a cache behavior or for the default cache behavior. 182 183 * `trusted_signers` (Optional) - The AWS accounts, if any, that you want to 184 allow to create signed URLs for private content. 185 186 * `viewer_protocol_policy` (Required) - Use this element to specify the 187 protocol that users can use to access the files in the origin specified by 188 TargetOriginId when a request matches the path pattern in PathPattern. One 189 of `allow-all`, `https-only`, or `redirect-to-https`. 190 191 ##### Forwarded Values Arguments 192 193 * `cookies` (Required) - The [forwarded values cookies](#cookies-arguments) 194 that specifies how CloudFront handles cookies (maximum one). 195 196 * `headers` (Optional) - Specifies the Headers, if any, that you want 197 CloudFront to vary upon for this cache behavior. Specify `*` to include all 198 headers. 199 200 * `query_string` (Required) - Indicates whether you want CloudFront to forward 201 query strings to the origin that is associated with this cache behavior. 202 203 * `query_string_cache_keys` (Optional) - When specified, along with a value of 204 `true` for `query_string`, all query strings are forwarded, however only the 205 query string keys listed in this argument are cached. When omitted with a 206 value of `true` for `query_string`, all query string keys are cached. 207 208 ##### Cookies Arguments 209 210 * `forward` (Required) - Specifies whether you want CloudFront to forward 211 cookies to the origin that is associated with this cache behavior. You can 212 specify `all`, `none` or `whitelist`. If `whitelist`, you must include the 213 subsequent `whitelisted_names` 214 215 * `whitelisted_names` (Optional) - If you have specified `whitelist` to 216 `forward`, the whitelisted cookies that you want CloudFront to forward to 217 your origin. 218 219 #### Custom Error Response Arguments 220 221 * `error_caching_min_ttl` (Optional) - The minimum amount of time you want 222 HTTP error codes to stay in CloudFront caches before CloudFront queries your 223 origin to see whether the object has been updated. 224 225 * `error_code` (Required) - The 4xx or 5xx HTTP status code that you want to 226 customize. 227 228 * `response_code` (Optional) - The HTTP status code that you want CloudFront 229 to return with the custom error page to the viewer. 230 231 * `response_page_path` (Optional) - The path of the custom error page (for 232 example, `/custom_404.html`). 233 234 #### Default Cache Behavior Arguments 235 236 The arguments for `default_cache_behavior` are the same as for 237 [`cache_behavior`](#cache-behavior-arguments), except for the `path_pattern` 238 argument is not required. 239 240 #### Logging Config Arguments 241 242 * `bucket` (Required) - The Amazon S3 bucket to store the access logs in, for 243 example, `myawslogbucket.s3.amazonaws.com`. 244 245 * `include_cookies` (Optional) - Specifies whether you want CloudFront to 246 include cookies in access logs (default: `false`). 247 248 * `prefix` (Optional) - An optional string that you want CloudFront to prefix 249 to the access log filenames for this distribution, for example, `myprefix/`. 250 251 #### Origin Arguments 252 253 * `custom_origin_config` - The [CloudFront custom 254 origin](#custom-origin-config-arguments) configuration information. If an S3 255 origin is required, use `s3_origin_config` instead. 256 257 * `domain_name` (Required) - The DNS domain name of either the S3 bucket, or 258 web site of your custom origin. 259 260 * `custom_header` (Optional) - One or more sub-resources with `name` and 261 `value` parameters that specify header data that will be sent to the origin 262 (multiples allowed). 263 264 * `origin_id` (Required) - A unique identifier for the origin. 265 266 * `origin_path` (Optional) - An optional element that causes CloudFront to 267 request your content from a directory in your Amazon S3 bucket or your 268 custom origin. 269 270 * `s3_origin_config` - The [CloudFront S3 origin](#s3-origin-config-arguments) 271 configuration information. If a custom origin is required, use 272 `custom_origin_config` instead. 273 274 ##### Custom Origin Config Arguments 275 276 * `http_port` (Required) - The HTTP port the custom origin listens on. 277 278 * `https_port` (Required) - The HTTPS port the custom origin listens on. 279 280 * `origin_protocol_policy` (Required) - The origin protocol policy to apply to 281 your origin. One of `http-only`, `https-only`, or `match-viewer`. 282 283 * `origin_ssl_protocols` (Required) - The SSL/TLS protocols that you want 284 CloudFront to use when communicating with your origin over HTTPS. A list of 285 one or more of `SSLv3`, `TLSv1`, `TLSv1.1`, and `TLSv1.2`. 286 287 ##### S3 Origin Config Arguments 288 289 * `origin_access_identity` (Optional) - The [CloudFront origin access 290 identity][5] to associate with the origin. 291 292 #### Restrictions Arguments 293 294 The `restrictions` sub-resource takes another single sub-resource named 295 `geo_restriction` (see the example for usage). 296 297 The arguments of `geo_restriction` are: 298 299 * `locations` (Optional) - The [ISO 3166-1-alpha-2 codes][4] for which you 300 want CloudFront either to distribute your content (`whitelist`) or not 301 distribute your content (`blacklist`). 302 303 * `restriction_type` (Required) - The method that you want to use to restrict 304 distribution of your content by country: `none`, `whitelist`, or 305 `blacklist`. 306 307 #### Viewer Certificate Arguments 308 309 * `acm_certificate_arn` - The ARN of the [AWS Certificate Manager][6] 310 certificate that you wish to use with this distribution. Specify this, 311 `cloudfront_default_certificate`, or `iam_certificate_id`. The ACM 312 certificate must be in US-EAST-1. 313 314 * `cloudfront_default_certificate` - `true` if you want viewers to use HTTPS 315 to request your objects and you're using the CloudFront domain name for your 316 distribution. Specify this, `acm_certificate_arn`, or `iam_certificate_id`. 317 318 * `iam_certificate_id` - The IAM certificate identifier of the custom viewer 319 certificate for this distribution if you are using a custom domain. Specify 320 this, `acm_certificate_arn`, or `cloudfront_default_certificate`. 321 322 * `minimum_protocol_version` - The minimum version of the SSL protocol that 323 you want CloudFront to use for HTTPS connections. One of `SSLv3` or `TLSv1`. 324 Default: `SSLv3`. **NOTE**: If you are using a custom certificate (specified 325 with `acm_certificate_arn` or `iam_certificate_id`), and have specified 326 `sni-only` in `ssl_support_method`, `TLSv1` must be specified. 327 328 * `ssl_support_method`: Specifies how you want CloudFront to serve HTTPS 329 requests. One of `vip` or `sni-only`. Required if you specify 330 `acm_certificate_arn` or `iam_certificate_id`. **NOTE:** `vip` causes 331 CloudFront to use a dedicated IP address and may incur extra charges. 332 333 ## Attribute Reference 334 335 The following attributes are exported: 336 337 * `id` - The identifier for the distribution. For example: `EDFDVBD632BHDS5`. 338 339 * `caller_reference` - Internal value used by CloudFront to allow future 340 updates to the distribution configuration. 341 342 * `status` - The current status of the distribution. `Deployed` if the 343 distribution's information is fully propagated throughout the Amazon 344 CloudFront system. 345 346 * `active_trusted_signers` - The key pair IDs that CloudFront is aware of for 347 each trusted signer, if the distribution is set up to serve private content 348 with signed URLs. 349 350 * `domain_name` - The domain name corresponding to the distribution. For 351 example: `d604721fxaaqy9.cloudfront.net`. 352 353 * `last_modified_time` - The date and time the distribution was last modified. 354 355 * `in_progress_validation_batches` - The number of invalidation batches 356 currently in progress. 357 358 * `etag` - The current version of the distribution's information. For example: 359 `E2QWRUHAPOMQZL`. 360 361 * `hosted_zone_id` - The CloudFront Route 53 zone ID that can be used to 362 route an [Alias Resource Record Set][7] to. This attribute is simply an 363 alias for the zone ID `Z2FDTNDATAQYW2`. 364 365 366 [1]: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html 367 [2]: http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html 368 [3]: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html 369 [4]: http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm 370 [5]: /docs/providers/aws/r/cloudfront_origin_access_identity.html 371 [6]: https://aws.amazon.com/certificate-manager/ 372 [7]: http://docs.aws.amazon.com/Route53/latest/APIReference/CreateAliasRRSAPI.html 373 374 375 ## Import 376 377 Cloudfront Distributions can be imported using the `id`, e.g. 378 379 ``` 380 $ terraform import aws_cloudfront_distribution.distribution E74FTE3EXAMPLE 381 ```