github.com/jrasell/terraform@v0.6.17-0.20160523115548-2652f5232949/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