github.com/erriapo/terraform@v0.6.12-0.20160203182612-0340ea72354f/website/source/docs/providers/aws/r/s3_bucket.html.markdown (about)

     1  ---
     2  layout: "aws"
     3  page_title: "AWS: aws_s3_bucket"
     4  sidebar_current: "docs-aws-resource-s3-bucket"
     5  description: |-
     6    Provides a S3 bucket resource.
     7  ---
     8  
     9  # aws\_s3\_bucket
    10  
    11  Provides a S3 bucket resource.
    12  
    13  ## Example Usage
    14  
    15  ### Private Bucket w/ Tags
    16  
    17  ```
    18  resource "aws_s3_bucket" "b" {
    19      bucket = "my_tf_test_bucket"
    20      acl = "private"
    21  
    22      tags {
    23          Name = "My bucket"
    24          Environment = "Dev"
    25      }
    26  }
    27  ```
    28  
    29  ### Static Website Hosting
    30  
    31  ```
    32  resource "aws_s3_bucket" "b" {
    33      bucket = "s3-website-test.hashicorp.com"
    34      acl = "public-read"
    35      policy = "${file("policy.json")}"
    36  
    37      website {
    38          index_document = "index.html"
    39          error_document = "error.html"
    40      }
    41  }
    42  ```
    43  
    44  ### Using CORS
    45  
    46  ```
    47  resource "aws_s3_bucket" "b" {
    48      bucket = "s3-website-test.hashicorp.com"
    49      acl = "public-read"
    50  
    51      cors_rule {
    52          allowed_headers = ["*"]
    53          allowed_methods = ["PUT","POST"]
    54          allowed_origins = ["https://s3-website-test.hashicorp.com"]
    55          expose_headers = ["ETag"]
    56          max_age_seconds = 3000
    57      }
    58  }
    59  ```
    60  
    61  ### Using versioning
    62  
    63  ```
    64  resource "aws_s3_bucket" "b" {
    65      bucket = "my_tf_test_bucket"
    66      acl = "private"
    67      versioning {
    68          enabled = true
    69      }
    70  }
    71  ```
    72  
    73  ### Enable Logging
    74  
    75  ```
    76  resource "aws_s3_bucket" "log_bucket" {
    77     bucket = "my_tf_log_bucket"
    78     acl = "log-delivery-write"
    79  }
    80  resource "aws_s3_bucket" "b" {
    81     bucket = "my_tf_test_bucket"
    82     acl = "private"
    83     logging {
    84  	   target_bucket = "${aws_s3_bucket.log_bucket.id}"
    85  	   target_prefix = "log/"
    86     }
    87  }
    88  ```
    89  
    90  ## Argument Reference
    91  
    92  The following arguments are supported:
    93  
    94  * `bucket` - (Required) The name of the bucket.
    95  * `acl` - (Optional) The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Defaults to "private".
    96  * `policy` - (Optional) A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), Terraform may view the policy as constantly changing in a `terraform plan`. In this case, please make sure you use the verbose/specific version of the policy.
    97  
    98  * `tags` - (Optional) A mapping of tags to assign to the bucket.
    99  * `force_destroy` - (Optional, Default:false ) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable.
   100  * `website` - (Optional) A website object (documented below).
   101  * `cors_rule` - (Optional) A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below).
   102  * `versioning` - (Optional) A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below)
   103  * `logging` - (Optional) A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below).
   104  
   105  The `website` object supports the following:
   106  
   107  * `index_document` - (Required, unless using `redirect_all_requests_to`) Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders.
   108  * `error_document` - (Optional) An absolute path to the document to return in case of a 4XX error.
   109  * `redirect_all_requests_to` - (Optional) A hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request.
   110  
   111  The `CORS` object supports the following:
   112  
   113  * `allowed_headers` (Optional) Specifies which headers are allowed.
   114  * `allowed_methods` (Required) Specifies which methods are allowed. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`.
   115  * `allowed_origins` (Required) Specifies which origins are allowed.
   116  * `expose_headers` (Optional) Specifies expose header in the response.
   117  * `max_age_seconds` (Optional) Specifies time in seconds that browser can cache the response for a preflight request.
   118  
   119  The `versioning` object supports the following:
   120  
   121  * `enabled` - (Optional) Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket.
   122  
   123  The `logging` object supports the following:
   124  
   125  * `target_bucket` - (Required) The name of the bucket that will receive the log objects.
   126  * `target_prefix` - (Optional) To specify a key prefix for log objects.
   127  
   128  ## Attributes Reference
   129  
   130  The following attributes are exported:
   131  
   132  * `id` - The name of the bucket.
   133  * `arn` - The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`
   134  * `hosted_zone_id` - The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region.
   135  * `region` - The AWS region this bucket resides in.
   136  * `website_endpoint` - The website endpoint, if the bucket is configured with a website. If not, this will be an empty string.
   137  * `website_domain` - The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records.