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