All Products
Search
Document Center

Terraform:Manage OSS buckets

Last Updated:Jul 03, 2026

Use Terraform to create an Object Storage Service (OSS) bucket and configure properties such as static website hosting, logging, and lifecycle rules.

Note

Run the sample code in this tutorial with a single click. Run now

Prerequisites

Before you begin, ensure that you have:

Procedure

  1. Create a bucket.

    1. Create a terraform.tf file in your working directory with the following content.

      Note

      Create a separate working directory for each Terraform project.

      Note

      Run this sample code with a single click. Run now

      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 terraform apply. Output similar to the following indicates the bucket was created.

      Note

      OSS bucket names must be globally unique. If ErrorCode=BucketAlreadyExists is returned, change the bucket name and retry.

      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 bucket properties.

    1. Create a resource.tf file in your working directory with the following content.

      Note

      Terraform loads all .tf files in the directory, so you can split configurations across files.

      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 terraform apply. Output similar to the following indicates the properties were 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.