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:- Prepare an Alibaba Cloud account and an AccessKey pair (AccessKey ID and AccessKey secret) to use Terraform. You can go to the Security Management page of the Alibaba Cloud console to create or view your AccessKey pair.
- Install and configure Terraform. For more information, see Install and configure Terraform in the local PC and Use Terraform in Cloud Shell.
Procedure
Create a bucket.
Create the terraform.tf file, enter the following content, and save the file to the current working directory.
NoteYou must create an independent working directory for each Terraform project.
Noteprovider "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 }
Run the terraform apply command to create the bucket. If log entries similar to the following ones are displayed, the bucket is created.
NoteThe 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.
Configure the properties of the bucket.
Create the resource.tf file, enter the following content, and save the file to the current working directory.
NoteTerraform 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"] } }
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.