はじめに
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)
}
上記スクリプトは以下の処理を行います。
- リソースグループを作成
- ストレージアカウントを作成
- ストレージアカウントの中にコンテナを作成
- 3で作成したコンテナの中にblob(ファイル)をアップロード
汎用性を持たせるために、ストレージアカウント名やコンテナ名、アップロードするファイル名などについては、ローカル変数に設定することにしています。
スクリプトの実行方法
- 環境作成 (ファイルのアップロードまで)
- terraform init、terraform plan、terraform applyの順にコマンドを実行します。
- terraform applyが問題なく終了したら、Azure portal等で結果を確認します。
- 環境破棄 (コンテナの削除からリソースグループの削除まで)
- terraform destoryコマンドを実行します。
- コマンドが問題なく終了したら、Azure portal等で結果を確認します。