通過Terraform管理Bucket
本文介紹了如何使用Terraform創(chuàng)建一個存儲空間,并設(shè)置存儲空間屬性用來控制靜態(tài)網(wǎng)站托管、日志、生命周期等。
本教程所含示例代碼支持一鍵運行,您可以直接運行代碼。一鍵運行
前提條件
在開始之前,請您確保完成以下操作:
使用Terraform,您需要一個阿里云賬號和訪問密鑰(AccessKey)。 請在阿里云控制臺中的AccessKey管理頁面上創(chuàng)建和查看您的AccessKey。
已經(jīng)安裝并配置了Terraform,具體操作請參見在本地安裝和配置Terraform和在Cloud Shell中使用Terraform。
操作步驟
創(chuàng)建一個Bucket。
創(chuàng)建terraform.tf文件,輸入以下內(nèi)容,并保存在當前執(zhí)行的目錄中。
說明需要為每個Terraform項目創(chuàng)建一個獨立的執(zhí)行目錄。
說明當前示例代碼支持一鍵運行,您可以直接運行代碼。一鍵運行
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 }
運行terraform apply開始創(chuàng)建。出現(xiàn)類似下面的日志,則表示創(chuàng)建成功。
說明oss 的 bucket 具有全局唯一性。如果創(chuàng)建時報錯
ErrorCode=BucketAlreadyExists
,說明此bucket 名字已被占用,請更換名字后重試。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.
設(shè)置Bucket屬性。
創(chuàng)建resource.tf文件,輸入以下內(nèi)容,并保存在當前執(zhí)行的目錄中。
說明該目錄下所有*.tf 文件都會被terraform自動加載。因此,用戶可以按照實際用途將配置信息寫入不同的文件中。
resource "alicloud_oss_bucket" "bucket-attr" { provider = alicloud.bj-prod bucket = "bucket-2-${random_uuid.default.id}" # 靜態(tài)網(wǎng)站的默認首頁和404頁面 website { index_document = "index.html" error_document = "error.html" } # 訪問日志的存儲路徑 logging { target_bucket = alicloud_oss_bucket.bucket-new.id target_prefix = "log/" } # 文件生命周期規(guī)則 lifecycle_rule { id = "expirationByDays" prefix = "path/expirationByDays" enabled = true expiration { days = 365 } } # 防盜鏈設(shè)置 referer_config { allow_empty = true referers = ["http://www.aliyun.com", "https://www.aliyun.com", "http://?.aliyun.com"] } }
運行terraform apply開始配置Bucket的屬性。出現(xiàn)類似下面的日志,說明配置成功。
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.