文档

通过Terraform管理Bucket

更新时间:
一键部署

本文介绍了如何使用Terraform创建一个存储空间,并设置存储空间属性用来控制静态网站托管、日志、生命周期等。

前提条件

在开始之前,请您确保完成以下操作:

操作步骤

  1. 创建一个Bucket。

    1. 创建terraform.tf文件,输入以下内容,并保存在当前执行的目录中。

      说明

      需要为每个Terraform项目创建一个独立的执行目录。

      provider "alicloud" {
        alias  = "bj-prod"
        region = "cn-beijing"
      }
      
      resource "random_uuid" "default" {} 
      
      resource "alicloud_oss_bucket" "bucket-new" {
        provider = alicloud.bj-prod
      
        bucket = "bucket-auto-2024${random_uuid.default.id}"
        acl    = "public-read"
      }
    2. 运行terraform apply开始创建。出现类似下面的日志,则表示创建成功。

      说明

      oss 的 bucket 具有全局唯一性。如果创建时报错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.
  2. 设置Bucket属性。

    1. 创建resource.tf文件,输入以下内容,并保存在当前执行的目录中。

      说明

      该目录下所有*.tf 文件都会被terraform自动加载。因此,用户可以按照实际用途将配置信息写入不同的文件中。

      resource "alicloud_oss_bucket" "bucket-attr" {
        provider = alicloud.bj-prod
      
        bucket = "bucket-2-${random_uuid.default.id}"
        # 静态网站的默认首页和404页面
        website {
          index_document = "index.html"
          error_document = "error.html"
        }
        # 访问日志的存储路径
        logging {
          target_bucket = alicloud_oss_bucket.bucket-new.id
          target_prefix = "log/"
        }
        # 文件生命周期规则
        lifecycle_rule {
          id      = "expirationByDays"
          prefix  = "path/expirationByDays"
          enabled = true
      
          expiration {
            days = 365
          }
        }
        # 防盗链设置
        referer_config {
          allow_empty = true
          referers    = ["http://www.aliyun.com", "https://www.aliyun.com", "http://?.aliyun.com"]
        }
      }
    2. 运行terraform apply开始配置Bucket的属性。出现类似下面的日志,说明配置成功。

      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.