0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TerraformでAzure Blob Storage作成~ファイルのアップロードまでを自動化してみた

Last updated at Posted at 2022-06-15

はじめに

AWSにはAmazon S3(Simple Storage Service)と呼ばれるオブジェクトストレージがありますが、AzureにもBlob Storageと呼ばれるオブジェクトストレージがあります。今回は、TerraformでAzure Blob Storageの作成からファイルのアップロードまでを自動化するサンプルスクリプトを作成してみましたので、ご紹介します。

Blob Storageを使用するのに必要な物

Blob Storageを使用する場合に必要な物は、下記の2つです。Amazon S3を使用する場合とは異なり、ストレージアカウントと呼ばれるものが追加で必要になります。

  • ストレージアカウント
    • Blob Storageだけでなく、ファイル共有、キュー、テーブル等も全てこのストレージアカウントを使ってアクセスを行います。
  • データを保存するためのコンテナ
    •  Amazon S3におけるS3バケットと同様なものであり、上記ストレージアカウントの中に作成します。

検証環境

  • Windows10 Home Edition
  • Terraform V1.2.2 on windows_amd64
  • provider registry.terraform.io/hashicorp/azurerm v3.10.0

作成したサンプルスクリプト

スクリプトは下記のサイトを参考に作成しました。
Terraform Registry for Azure Blob Storage
上記サイトを元に作成したサンプルスクリプトは下記になります。ファイル名はStr_Account.tfとしておきます。

Str_Account.tf
terraform{
    required_providers{
        azurerm={
            source  = "hashicorp/azurerm"
            version = "=3.10.0"
        }
    }
}

# Configure the Microsoft Azure Provider
provider "azurerm" {
  features {}
}

# Set Local Variables
locals {
    rg_name = "My-RG"
    location_name = "Japan East"
    str_account_name = "mystraccount54683"
    str_container_name = "my-container"
    blob_name = "index.html"
    blob_local_file_path = "~/Documents/Azure/index.html"
}

# Create Resource Group
resource "azurerm_resource_group" "rg"{
    name = local.rg_name
    location = local.location_name
}

# Create an Azure Storage Account
resource "azurerm_storage_account" "stra"{
    name = local.str_account_name
    resource_group_name = azurerm_resource_group.rg.name
    location = azurerm_resource_group.rg.location
    account_kind = "StorageV2"
    account_tier = "Standard"
    account_replication_type = "LRS"
    access_tier = "Hot"
    shared_access_key_enabled = true
    tags = {
        Name = "Test"
    }
}

# Create an Azure Storage Container
resource "azurerm_storage_container" "strc"{
    name = local.str_container_name
    storage_account_name = azurerm_storage_account.stra.name
    container_access_type = "private"
}

# Create an Azure Storage Blob
resource "azurerm_storage_blob" "strb"{
    name = local.blob_name
    storage_account_name = azurerm_storage_account.stra.name
    storage_container_name = azurerm_storage_container.strc.name
    type = "Block"
    source_content = file(local.blob_local_file_path)
}

上記スクリプトは以下の処理を行います。

  1. リソースグループを作成
  2. ストレージアカウントを作成
  3. ストレージアカウントの中にコンテナを作成
  4. 3で作成したコンテナの中にblob(ファイル)をアップロード

汎用性を持たせるために、ストレージアカウント名やコンテナ名、アップロードするファイル名などについては、ローカル変数に設定することにしています。

スクリプトの実行方法

  • 環境作成 (ファイルのアップロードまで)
    • terraform init、terraform plan、terraform applyの順にコマンドを実行します。
    • terraform applyが問題なく終了したら、Azure portal等で結果を確認します。
  • 環境破棄 (コンテナの削除からリソースグループの削除まで)
    • terraform destoryコマンドを実行します。
    • コマンドが問題なく終了したら、Azure portal等で結果を確認します。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?