diff --git a/docs/resources/s3_bucket.md b/docs/resources/s3_bucket.md index 015983ebd8..a2eae18e90 100644 --- a/docs/resources/s3_bucket.md +++ b/docs/resources/s3_bucket.md @@ -14,9 +14,9 @@ The ``AWS::S3::Bucket`` resource creates an Amazon S3 bucket in the same AWS Reg You can only delete empty buckets. Deletion fails for buckets that have contents. ## Example Usage -### Create a s3 bucket +### Create an S3 bucket -To create a s3 bucket +To create an S3 bucket ```terraform resource "awscc_s3_bucket" "example" { @@ -30,9 +30,9 @@ resource "awscc_s3_bucket" "example" { } ``` -### Create a s3 bucket with public access restricted +### Create an S3 bucket with public access restricted -To create a s3 bucket with public access restricted +To create an S3 bucket with public access restricted ```terraform resource "awscc_s3_bucket" "example" { @@ -55,7 +55,7 @@ resource "awscc_s3_bucket" "example" { ### S3 bucket with default encryption AES256 -To create a s3 bucket with server side default encryption AES256 +To create an S3 bucket with server side default encryption AES256 ```terraform resource "awscc_s3_bucket" "example" { @@ -73,7 +73,7 @@ resource "awscc_s3_bucket" "example" { ### S3 bucket with default encryption KMS -To create a s3 bucket with server side encryption using KMS +To create an S3 bucket with server side encryption using KMS ```terraform resource "awscc_kms_key" "example" { @@ -145,14 +145,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -165,6 +157,13 @@ resource "awscc_s3_bucket" "example" { } ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } ``` @@ -178,14 +177,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -208,6 +199,13 @@ resource "awscc_s3_bucket" "example" { } ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } ``` @@ -221,14 +219,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -241,6 +231,13 @@ resource "awscc_s3_bucket" "example" { ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } ``` @@ -254,14 +251,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -274,17 +263,21 @@ resource "awscc_s3_bucket" "example" { object_size_greater_than = 500 status = "Enabled" } - - - ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } ``` ### Specifying a filter based on object size range and prefix -Creates an S3 bucket with object size range and a prefix. The `object_size_greater_than` must be less than the `object_size_less_than`. +Creates an S3 bucket with a lifecycle rule based on object size range and a prefix. The `object_size_greater_than` must be less than the `object_size_less_than`. ```terraform resource "awscc_s3_bucket" "example" { @@ -292,14 +285,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -312,11 +297,55 @@ resource "awscc_s3_bucket" "example" { object_size_greater_than = 500 status = "Enabled" } + ] + } + tags = [ + { + key = "Name" + value = "My bucket" + } + ] +} +``` + +### Specifying a lifecycle rule to transition objects between storage classes +Creates an S3 bucket with a lifecycle rule which moves non current versions of objects to different storage classes based on predefined days. +```terraform +resource "awscc_s3_bucket" "example" { + bucket_name = "example-bucket-lifecycle-rules" + versioning_configuration = { + status = "Enabled" + } + lifecycle_configuration = { + rules = [ + { + id = "non_current_version_transitions" + + noncurrent_version_expiration_in_days = 90 + noncurrent_version_transitions = [ + { + transition_in_days = 30 + storage_class = "STANDARD_IA" + }, + { + transition_in_days = 60 + storage_class = "INTELLIGENT_TIERING" + } + ] + status = "Enabled" + } ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } ``` diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_abort_incomplete_upload.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_abort_incomplete_upload.tf index 799295f4ae..b886cbdada 100644 --- a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_abort_incomplete_upload.tf +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_abort_incomplete_upload.tf @@ -3,14 +3,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -23,5 +15,12 @@ resource "awscc_s3_bucket" "example" { ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_filter_tags.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_filter_tags.tf index 95bfdf1fc0..9458e2531d 100644 --- a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_filter_tags.tf +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_filter_tags.tf @@ -3,14 +3,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -33,4 +25,11 @@ resource "awscc_s3_bucket" "example" { } ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } \ No newline at end of file diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_noncurrent_version.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_noncurrent_version.tf index 7513cff6ad..fb2eb429bc 100644 --- a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_noncurrent_version.tf +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_expire_noncurrent_version.tf @@ -3,14 +3,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -23,4 +15,11 @@ resource "awscc_s3_bucket" "example" { } ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } \ No newline at end of file diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_range_prefix.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_range_prefix.tf index bd45ea2f6e..288b4fe2c6 100644 --- a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_range_prefix.tf +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_range_prefix.tf @@ -3,14 +3,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -27,4 +19,11 @@ resource "awscc_s3_bucket" "example" { ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_size_greater_than.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_size_greater_than.tf index b56983801f..824e1339e8 100644 --- a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_size_greater_than.tf +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_filter_object_size_greater_than.tf @@ -3,14 +3,6 @@ resource "awscc_s3_bucket" "example" { versioning_configuration = { status = "Enabled" } - - tags = [ - { - key = "Name" - value = "My bucket" - } - ] - lifecycle_configuration = { rules = [ { @@ -23,9 +15,13 @@ resource "awscc_s3_bucket" "example" { object_size_greater_than = 500 status = "Enabled" } - - - ] } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] } diff --git a/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_storage_transitions.tf b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_storage_transitions.tf new file mode 100644 index 0000000000..7100517c60 --- /dev/null +++ b/examples/resources/awscc_s3_bucket/s3_bucket_lifecycle_storage_transitions.tf @@ -0,0 +1,33 @@ +resource "awscc_s3_bucket" "example" { + bucket_name = "example-bucket-lifecycle-rules" + versioning_configuration = { + status = "Enabled" + } + lifecycle_configuration = { + rules = [ + { + id = "non_current_version_transitions" + + noncurrent_version_expiration_in_days = 90 + noncurrent_version_transitions = [ + { + transition_in_days = 30 + storage_class = "STANDARD_IA" + }, + { + transition_in_days = 60 + storage_class = "INTELLIGENT_TIERING" + } + ] + status = "Enabled" + } + ] + } + + tags = [ + { + key = "Name" + value = "My bucket" + } + ] +} \ No newline at end of file diff --git a/templates/resources/s3_bucket.md.tmpl b/templates/resources/s3_bucket.md.tmpl index db5ff89ab9..e33b0f4ed5 100644 --- a/templates/resources/s3_bucket.md.tmpl +++ b/templates/resources/s3_bucket.md.tmpl @@ -72,10 +72,16 @@ Creates an S3 bucket with a lifecycle rule filtered on object size greater than ### Specifying a filter based on object size range and prefix -Creates an S3 bucket with object size range and a prefix. The `object_size_greater_than` must be less than the `object_size_less_than`. +Creates an S3 bucket with a lifecycle rule based on object size range and a prefix. The `object_size_greater_than` must be less than the `object_size_less_than`. {{ tffile (printf "examples/resources/%s/s3_bucket_lifecycle_filter_object_size_greater_than.tf" .Name)}} +### Specifying a lifecycle rule to transition objects between storage classes + +Creates an S3 bucket with a lifecycle rule which moves non current versions of objects to different storage classes based on predefined days. + +{{ tffile (printf "examples/resources/%s/s3_bucket_lifecycle_storage_transitions.tf" .Name)}} + {{ .SchemaMarkdown | trimspace }} {{- if .HasImport }}