github.com/pmcatominey/terraform@v0.7.0-rc2.0.20160708105029-1401a52a5cc5/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 * `logging_config` (Optional) - The [logging 114 configuration](#logging-config-arguments) that controls how logs are written 115 to your distribution (maximum one). 116 117 * `origin` (Required) - One or more [origins](#origin-arguments) for this 118 distribution (multiples allowed). 119 120 * `price_class` (Optional) - The price class for this distribution. One of 121 `PriceClass_All`, `PriceClass_200`, `PriceClass_100` 122 123 * `restrictions` (Required) - The [restriction 124 configuration](#restrictions-arguments) for this distribution (maximum one). 125 126 * `viewer_certificate` (Required) - The [SSL 127 configuration](#viewer-certificate-arguments) for this distribution (maximum 128 one). 129 130 * `web_acl_id` (Optional) - If you're using AWS WAF to filter CloudFront 131 requests, the Id of the AWS WAF web ACL that is associated with the 132 distribution. 133 134 * `retain_on_delete` (Optional) - Disables the distribution instead of 135 deleting it when destroying the resource through Terraform. If this is set, 136 the distribution needs to be deleted manually afterwards. Default: `false`. 137 138 #### Cache Behavior Arguments 139 140 * `allowed_methods` (Required) - Controls which HTTP methods CloudFront 141 processes and forwards to your Amazon S3 bucket or your custom origin. 142 143 * `cached_methods` (Required) - Controls whether CloudFront caches the 144 response to requests using the specified HTTP methods. 145 146 * `compress` (Optional) - Whether you want CloudFront to automatically 147 compress content for web requests that include `Accept-Encoding: gzip` in 148 the request header (default: `false`). 149 150 * `default_ttl` (Required) - The default amount of time (in seconds) that an 151 object is in a CloudFront cache before CloudFront forwards another request 152 in the absence of an `Cache-Control max-age` or `Expires` header. 153 154 * `forwarded_values` (Required) - The [forwarded values 155 configuration](#forwarded-values-arguments) that specifies how CloudFront 156 handles query strings, cookies and headers (maximum one). 157 158 * `max_ttl` (Required) - The maximum amount of time (in seconds) that an 159 object is in a CloudFront cache before CloudFront forwards another request 160 to your origin to determine whether the object has been updated. Only 161 effective in the presence of `Cache-Control max-age`, `Cache-Control 162 s-maxage`, and `Expires` headers. 163 164 * `min_ttl` (Required) - The minimum amount of time that you want objects to 165 stay in CloudFront caches before CloudFront queries your origin to see 166 whether the object has been updated. 167 168 * `path_pattern` (Required) - The pattern (for example, `images/*.jpg)` that 169 specifies which requests you want this cache behavior to apply to. 170 171 * `smooth_streaming` (Optional) - Indicates whether you want to distribute 172 media files in Microsoft Smooth Streaming format using the origin that is 173 associated with this cache behavior. 174 175 * `target_origin_id` (Required) - The value of ID for the origin that you want 176 CloudFront to route requests to when a request matches the path pattern 177 either for a cache behavior or for the default cache behavior. 178 179 * `trusted_signers` (Optional) - The AWS accounts, if any, that you want to 180 allow to create signed URLs for private content. 181 182 * `viewer_protocol_policy` (Required) - Use this element to specify the 183 protocol that users can use to access the files in the origin specified by 184 TargetOriginId when a request matches the path pattern in PathPattern. One 185 of `allow-all`, `https-only`, or `redirect-to-https`. 186 187 ##### Forwarded Values Arguments 188 189 * `cookies` (Required) - The [forwarded values cookies](#cookies-arguments) 190 that specifies how CloudFront handles cookies (maximum one). 191 192 * `headers` (Optional) - Specifies the Headers, if any, that you want 193 CloudFront to vary upon for this cache behavior. Specify `*` to include all 194 headers. 195 196 * `query_string` (Required) - Indicates whether you want CloudFront to forward 197 query strings to the origin that is associated with this cache behavior. 198 199 ##### Cookies Arguments 200 201 * `forward` (Required) - Specifies whether you want CloudFront to forward 202 cookies to the origin that is associated with this cache behavior. You can 203 specify `all`, `none` or `whitelist`. If `whitelist`, you must include the 204 subsequent `whitelisted_names` 205 206 * `whitelisted_names` (Optional) - If you have specified `whitelist` to 207 `forward`, the whitelisted cookies that you want CloudFront to forward to 208 your origin. 209 210 #### Custom Error Response Arguments 211 212 * `error_caching_min_ttl` (Optional) - The minimum amount of time you want 213 HTTP error codes to stay in CloudFront caches before CloudFront queries your 214 origin to see whether the object has been updated. 215 216 * `error_code` (Required) - The 4xx or 5xx HTTP status code that you want to 217 customize. 218 219 * `response_code` (Optional) - The HTTP status code that you want CloudFront 220 to return with the custom error page to the viewer. 221 222 * `response_page_path` (Optional) - The path of the custom error page (for 223 example, `/custom_404.html`). 224 225 #### Default Cache Behavior Arguments 226 227 The arguments for `default_cache_behavior` are the same as for 228 [`cache_behavior`](#cache-behavior-arguments), except for the `path_pattern` 229 argument is not required. 230 231 #### Logging Config Arguments 232 233 * `bucket` (Required) - The Amazon S3 bucket to store the access logs in, for 234 example, `myawslogbucket.s3.amazonaws.com`. 235 236 * `include_cookies` (Optional) - Specifies whether you want CloudFront to 237 include cookies in access logs (default: `false`). 238 239 * `prefix` (Optional) - An optional string that you want CloudFront to prefix 240 to the access log filenames for this distribution, for example, `myprefix/`. 241 242 #### Origin Arguments 243 244 * `custom_origin_config` - The [CloudFront custom 245 origin](#custom-origin-config-arguments) configuration information. If an S3 246 origin is required, use `s3_origin_config` instead. 247 248 * `domain_name` (Required) - The DNS domain name of either the S3 bucket, or 249 web site of your custom origin. 250 251 * `custom_header` (Optional) - One or more sub-resources with `name` and 252 `value` parameters that specify header data that will be sent to the origin 253 (multiples allowed). 254 255 * `origin_id` (Required) - A unique identifier for the origin. 256 257 * `origin_path` (Optional) - An optional element that causes CloudFront to 258 request your content from a directory in your Amazon S3 bucket or your 259 custom origin. 260 261 * `s3_origin_config` - The [CloudFront S3 origin](#s3-origin-config-arguments) 262 configuration information. If a custom origin is required, use 263 `custom_origin_config` instead. 264 265 ##### Custom Origin Config Arguments 266 267 * `http_port` (Required) - The HTTP port the custom origin listens on. 268 269 * `https_port` (Required) - The HTTPS port the custom origin listens on. 270 271 * `origin_protocol_policy` (Required) - The origin protocol policy to apply to 272 your origin. One of `http-only`, `https-only`, or `match-viewer`. 273 274 * `origin_ssl_protocols` (Required) - The SSL/TLS protocols that you want 275 CloudFront to use when communicating with your origin over HTTPS. A list of 276 one or more of `SSLv3`, `TLSv1`, `TLSv1.1`, and `TLSv1.2`. 277 278 ##### S3 Origin Config Arguments 279 280 * `origin_access_identity` (Optional) - The [CloudFront origin access 281 identity][5] to associate with the origin. 282 283 #### Restrictions Arguments 284 285 The `restrictions` sub-resource takes another single sub-resource named 286 `geo_restriction` (see the example for usage). 287 288 The arguments of `geo_restriction` are: 289 290 * `locations` (Optional) - The [ISO 3166-1-alpha-2 codes][4] for which you 291 want CloudFront either to distribute your content (`whitelist`) or not 292 distribute your content (`blacklist`). 293 294 * `restriction_type` (Required) - The method that you want to use to restrict 295 distribution of your content by country: `none`, `whitelist`, or 296 `blacklist`. 297 298 #### Viewer Certificate Arguments 299 300 * `acm_certificate_arn` - The ARN of the [AWS Certificate Manager][6] 301 certificate that you wish to use with this distribution. Specify this, 302 `cloudfront_default_certificate`, or `iam_certificate_id`. 303 304 * `cloudfront_default_certificate` - `true` if you want viewers to use HTTPS 305 to request your objects and you're using the CloudFront domain name for your 306 distribution. Specify this, `acm_certificate_arn`, or `iam_certificate_id`. 307 308 * `iam_certificate_id` - The IAM certificate identifier of the custom viewer 309 certificate for this distribution if you are using a custom domain. Specify 310 this, `acm_certificate_arn`, or `cloudfront_default_certificate`. 311 312 * `minimum_protocol_version` - The minimum version of the SSL protocol that 313 you want CloudFront to use for HTTPS connections. One of `SSLv3` or `TLSv1`. 314 Default: `SSLv3`. **NOTE**: If you are using a custom certificate (specified 315 with `acm_certificate_arn` or `iam_certificate_id`), and have specified 316 `sni-only` in `ssl_support_method`, `TLSv1` must be specified. 317 318 * `ssl_support_method`: Specifies how you want CloudFront to serve HTTPS 319 requests. One of `vip` or `sni-only`. Required if you specify 320 `acm_certificate_arn` or `iam_certificate_id`. **NOTE:** `vip` causes 321 CloudFront to use a dedicated IP address and may incur extra charges. 322 323 ## Attribute Reference 324 325 The following attributes are exported: 326 327 * `id` - The identifier for the distribution. For example: `EDFDVBD632BHDS5`. 328 329 * `caller_reference` - Internal value used by CloudFront to allow future 330 updates to the distribution configuration. 331 332 * `status` - The current status of the distribution. `Deployed` if the 333 distribution's information is fully propagated throughout the Amazon 334 CloudFront system. 335 336 * `active_trusted_signers` - The key pair IDs that CloudFront is aware of for 337 each trusted signer, if the distribution is set up to serve private content 338 with signed URLs. 339 340 * `domain_name` - The domain name corresponding to the distribution. For 341 example: `d604721fxaaqy9.cloudfront.net`. 342 343 * `last_modified_time` - The date and time the distribution was last modified. 344 345 * `in_progress_validation_batches` - The number of invalidation batches 346 currently in progress. 347 348 * `etag` - The current version of the distribution's information. For example: 349 `E2QWRUHAPOMQZL`. 350 351 * `hosted_zone_id` - The CloudFront Route 53 zone ID that can be used to 352 route an [Alias Resource Record Set][7] to. This attribute is simply an 353 alias for the zone ID `Z2FDTNDATAQYW2`. 354 355 356 [1]: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html 357 [2]: http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html 358 [3]: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html 359 [4]: http://www.iso.org/iso/country_codes/iso_3166_code_lists/country_names_and_code_elements.htm 360 [5]: /docs/providers/aws/r/cloudfront_origin_access_identity.html 361 [6]: https://aws.amazon.com/certificate-manager/ 362 [7]: http://docs.aws.amazon.com/Route53/latest/APIReference/CreateAliasRRSAPI.html