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

Object Storage Service:Terraform を使った OSS の管理

最終更新日:Dec 13, 2024

Terraformは、クラウドリソースを安全かつ効率的に構成および管理するために使用されるオープンソースツールです。 このトピックでは、Terraformを使用してバケットを作成する方法について説明します。

説明

このトピックのサンプルコードは、数回クリックするだけで実行できます。 こちらをクリックしてサンプルコードを実行します。

前提条件

  • このトピックの操作を実行するために最低限必要な権限を持つRAMユーザーを使用することをお勧めします。 これにより、Alibaba CloudアカウントのAccessKeyペアが漏洩するリスクが最小限に抑えられます。 必要最小限のポリシーをRAMユーザーにアタッチする方法については、「RAMユーザーの作成」および「RAMユーザーへの権限の付与」をご参照ください。 このトピックには次のポリシーが用意されています。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "oss:*",
          "Resource": "*"
        }
      ]
    }
  • Terraformのランタイム環境は、次のいずれかの方法を使用して準備されます。

    • Explorer: Alibaba Cloudは、Terraformのオンラインランタイム環境であるTerraform Explorerを提供しています。 Terraform Explorerにログインした後、Terraformをインストールする必要なくTerraformを使用できます。 この方法は、Terraformを高速かつ便利な方法で追加費用なしで使用およびデバッグするシナリオに適しています。

    • Cloud Shell: TerraformはCloud Shellにプリインストールされており、ID認証情報が設定されています。 Cloud ShellでTerraformコマンドを直接実行できます。 この方法は、Terraformを高速で便利な方法で低コストで使用およびデバッグするシナリオに適しています。

    • Terraformをローカルコンピューターにインストールして構成する: この方法は、ネットワークの状態が悪い、またはカスタム開発環境が必要なシナリオに適しています。

説明

この例では、特定のリソースに対して料金が生成されます。 リソースが不要になったときにリソースを解放または退会します。

必要なリソース

バケットを作成する

  1. ディレクトリとmain.tfという名前の設定ファイルを作成します。 次のコードをmain.tf設定ファイルにコピーします。

    variable "region"{
      default = "cn-beijing"
    }
    
    provider "alicloud"{
      region = var.region
    }
    
    resource "random_uuid" "default" {
    }
    
    # Create a bucket.
    resource "alicloud_oss_bucket" "bucket" {
      bucket = substr("tf-example-${replace(random_uuid.default.result, "-", "")}", 0, 16)
    }
    
    # Configure the ACL of the bucket.
    resource "alicloud_oss_bucket_acl" "bucket-ac"{
      bucket = alicloud_oss_bucket.bucket.id
      acl = "private"
    }
    
  2. 次のコマンドを実行して、Terraformランタイム環境を初期化します。

    terraform init

    次のコマンド出力が返されると、Terraformは初期化されます。

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. 次のコマンドを実行して、コードの実行を開始します。

    terraform apply

    コードの実行中に、プロンプトに従ってyesと入力し、enterキーを押します。 コマンドが完了するまで待ちます。 次のコマンド出力が返された場合、コードは正常に実行されます。

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    
    Apply complete!  Resources: 3 added, 0 changed, 0 destroyed.
  4. 結果を確認します。

    terraform showコマンドを実行します。

    ディレクトリで次のコマンドを実行して、Terraformを使用して作成されたバケットの詳細を照会します。

    terraform show

    image

    OSSコンソールへのログイン

    1. OSS コンソールにログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックして [バケット] ページに移動し、作成したバケットを表示します。

      image

    2. 作成したバケットの名前をクリックします。 左側のナビゲーションツリーで、[権限管理] > [ACL] を選択します。 [ACL] タブで、バケットのACLを表示します。

      image

リリースリソース

Terraformを使用して作成または管理された上記のリソースが不要になった場合は、次のコマンドを実行してリソースを解放します。 terraform destroyコマンドの詳細については、「一般的なコマンド」をご参照ください。

terraform destroy

説明

数回クリックするだけでサンプルコードを実行できます。 こちらをクリックしてサンプルコードを実行します。

サンプルコード

variable "region"{
  default = "cn-beijing"
}

provider "alicloud"{
  region = var.region
}

resource "random_uuid" "default" {
}

# Create a bucket.
resource "alicloud_oss_bucket" "bucket" {
  bucket = substr("tf-example-${replace(random_uuid.default.result, "-", "")}", 0, 16)
}

# Configure the ACL of the bucket.
resource "alicloud_oss_bucket_acl" "bucket-ac"{
  bucket = alicloud_oss_bucket.bucket.id
  acl = "private"
}

より完全な例を表示する場合は、詳細な例ページの対応するサービスのディレクトリにアクセスしてください。