All Products
Search
Document Center

Terraform:Use Terraform to manage a bucket

Last Updated:Aug 26, 2024

This topic describes how to create a bucket and configure the properties of the bucket by using Terraform.

Prerequisites

Before you begin, make sure that you have completed the following operations:

Procedure

  1. Create a bucket.

    1. Create the terraform.tf file, enter the following content, and save the file to the current working directory.

      Note

      You must create an independent working directory for each Terraform project.

      provider "alicloud" {
        alias  = "bj-prod"
        region = "cn-beijing"
      }
      
      resource "random_uuid" "default" {} 
      
      resource "alicloud_oss_bucket" "bucket-new" {
        storage_class = "Standard"
        bucket        = "bucket-auto-2024${random_uuid.default.id}"
      }
      
      resource "alicloud_oss_bucket_acl" "default" {
        bucket = alicloud_oss_bucket.bucket-new.bucket
        acl    = "public-read"
      }
      
      output "buckname"{
        value = alicloud_oss_bucket.bucket-new.bucket
      }
    2. Run the terraform apply command to create the bucket. If log entries similar to the following ones are displayed, the bucket is created.

      Note

      The name of a bucket must be globally unique. If the error ErrorCode=BucketAlreadyExists is returned when you create a bucket, the specified name is already used by an existing bucket. In this case, specify a different bucket name and try again.

      alicloud_oss_bucket.bucket-new: Creating...
      alicloud_oss_bucket.bucket-new: Creation complete after 2s [id=bucket-20200310-1]
      
      Apply complete!  Resources: 1 added, 0 changed, 0 destroyed.
  2. Configure the properties of the bucket.

    1. Create the resource.tf file, enter the following content, and save the file to the current working directory.

      Note

      Terraform automatically loads all of the .tf files in the directory. You can write configuration information to different files as needed.

      resource "alicloud_oss_bucket" "bucket-attr" {
        provider = alicloud.bj-prod
      
        bucket = "bucket-2-${random_uuid.default.id}"
        # Default homepage and 404 page of the static website
        website {
          index_document = "index.html"
          error_document = "error.html"
        }
        # Path where access logs are stored
        logging {
          target_bucket = alicloud_oss_bucket.bucket-new.id
          target_prefix = "log/"
        }
        # Object lifecycle rule
        lifecycle_rule {
          id      = "expirationByDays"
          prefix  = "path/expirationByDays"
          enabled = true
      
          expiration {
            days = 365
          }
        }
        # Hotlink protection settings
        referer_config {
          allow_empty = true
          referers    = ["http://www.aliyun.com", "https://www.aliyun.com", "http://?.aliyun.com"]
        }
      }
    2. Run the terraform apply command to configure the properties of the bucket. If log entries similar to the following ones are displayed, the properties are configured.

      alicloud_oss_bucket.bucket-attr: Creating...
      alicloud_oss_bucket.bucket-attr: Creation complete after 2s [id=bucket-20200310-2]
      
      Apply complete!  Resources: 1 added, 0 changed, 0 destroyed.