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  ```