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.