すべてのプロダクト
Search
ドキュメントセンター

Terraform:Terraform を使用したバケットの管理

最終更新日:Nov 05, 2025

この Topic では、Terraform を使用してバケットを作成し、静的 Web サイトホスティング、ロギング、ライフサイクルルールなどのプロパティを設定する方法について説明します。

説明

このチュートリアルのサンプルコードは、ワンクリックで実行できます。今すぐ実行

前提条件

手順

  1. バケットを作成します。

    1. terraform.tf ファイルを作成し、次の内容を入力して、現在の作業ディレクトリにファイルを保存します。

      説明

      各 Terraform プロジェクトごとに個別の作業ディレクトリを作成します。

      説明

      このサンプルコードは、ワンクリックで実行できます。今すぐ実行

      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. terraform apply コマンドを実行します。次の出力のようなログは、バケットが作成されたことを示します。

      説明

      OSS バケット名はグローバルに一意である必要があります。ErrorCode=BucketAlreadyExists エラーが返された場合、バケット名はすでに使用されています。名前を変更してリトライしてください。

      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. バケットのプロパティを設定します。

    1. resource.tf ファイルを作成し、次の内容を入力して、現在の作業ディレクトリにファイルを保存します。

      説明

      Terraform は、ディレクトリ内のすべての .tf ファイルを自動的にロードします。必要に応じて、設定情報を異なるファイルに書き込むことができます。

      resource "alicloud_oss_bucket" "bucket-attr" {
        provider = alicloud.bj-prod
      
        bucket = "bucket-2-${random_uuid.default.id}"
        # 静的 Web サイトのデフォルトのホームページと 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 コマンドを実行して、バケットのプロパティを設定します。次の出力のようなログは、プロパティが設定されたことを示します。

      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.