presents by IT Consulting 109

Azure – PowerShellでストレージアカウントの作成

AWSをメインで利用しているエンジニアがAzure環境の構築をPowerShellで進める連載。
リソースグループの作成から仮想マシンを起動するまでを連載していく予定です。

第7回は、これから作成する仮想マシンで利用する、AWSでいうところのEBSに類似するサービス「ストレージアカウント」を作成します。

※ストレージアカウントについては、非管理ディスク(unManagedDisk)で構築してコストを下げる方法を利用します。 ※ただし、非管理ディスクは2025/9/30までに管理ディスクに移行する必要があります。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/unmanaged-disks-deprecation

番外編

  • 第10回 PowerShellでストレージアカウントの作成 ←★ここ
  • 第11回 PowerShellで仮想マシン用VHDイメージのアップロード
  • 第12回 PowerShellで仮想マシンをVHDイメージから作成
  • 第13回 PowerShellでディスクの拡張

前提:事前に「リソースグループ」が作成されていること。

# リソースグループ名を設定
$private:resourceGroupName = "rg001"

# ロケーションを設定
$private:location = "japaneast"

# タグを設定
$tags = @{"環境名"="ITC109"}

# 仮想マシン名を設定
$private:vmname = $private:resourceGroupName + "vm01"
# ###############################################################################################################################
## ストレージアカウントを作成
###############################################################################################################################
# ストレージアカウント名を設定
$private:storageAccountName = $private:vmname.ToLower() + "storage"

# 使用するストレージアカウントタイプを指定
$SkuName = "Standard_LRS"

$private:storageAccount = Get-AzStorageAccount -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -ErrorAction Ignore
#ストレージアカウントの有無確認
if (-not $private:storageAccount) {

    #ストレージアカウント一意制約確認
    $private:chekStorageAccountName = Get-AzStorageAccountNameAvailability -Name $private:storageAccountName
    if (-not $private:chekStorageAccountName) {
        Write-Host "ストレージアカウント作成エラー(一意制約違反)" -ForegroundColor Red

    }

    try {
        #ストレージアカウント作成
        Write-Host ("$private:resourceGroupName の「ストレージアカウント」に $private:storageAccountName を作成中...")
        $null = New-AzStorageAccount -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -Tag $tags -SkuName $SkuName -Kind StorageV2 -ErrorAction Stop -EnableHttpsTrafficOnly $True
        Write-Host ("$private:resourceGroupName の「ストレージアカウント」に ${private:storageAccountName} を作成しました。")
        Write-Host ""

    } catch {
        Write-Host "ストレージアカウント作成エラー" -ForegroundColor Red
        Write-Error -Message $_.Exception

    }

} else {
    Write-Host ("$private:resourceGroupName の「ストレージアカウント」には、既に ${private:storageAccountName.ToLower()} が存在するため作成をスキップしました。") -ForegroundColor Yellow
    Write-Host ""

}

###############################################################################################################################
Write-Host ""

ストレージアカウントには小文字の英数字しか指定できないため注意する。

$private:storageAccountName = $private:vmname.ToLower() + "storage"

Get-AzStorageAccountで既に同名のリソースが存在しないか確認。

$private:storageAccount = Get-AzStorageAccount -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -ErrorAction Ignore
if (-not $private:storageAccount) {
  ※リソースが存在しない場合は、ここに作成する処理を記述。
} else {
  ※リソースが存在する場合は、ここに作成しない処理を記述。
}

Get-AzStorageAccountNameAvailabilityでストレージアカウント一意制約に該当しないか確認。

$private:chekStorageAccountName = Get-AzStorageAccountNameAvailability -Name $private:storageaccountname
if (-not $private:chekStorageAccountName) {
    Write-Host "ストレージアカウント作成エラー(一意制約違反)" -ForegroundColor Red
}

New-AzStorageAccountでストレージアカウントを作成。

New-AzStorageAccount -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -Tag $tags -SkuName $SkuName -Kind Storage -EnableHttpsTrafficOnly $False -ErrorAction Stop

-SkuNameオプション「パフォーマンス」について以下から指定。

  • Premium_LRS
  • Premium_ZRS
  • Standard_GRS
  • Standard_GZRS
  • Standard_LRS
  • Standard_RAGRS
  • Standard_RAGZRS
  • Standard_ZRS
-SkuName Standard_LRS

-Kind Storage オプション「アカウントの種類」について以下から指定。

  • Storage
  • StorageV2
  • BlobStorage
  • FileStorage
  • BlockBlobStorage
-Kind StorageV2

-EnableHttpsTrafficOnlyオプション「安全な転送が必須」について以下から指定。

  • $True
  • $False
-EnableHttpsTrafficOnly $True

try ~ catchで例外が発生したときにエラーメッセージを表示。

try {
    ※リソースの作成の作成。
} catch {
    ※リソースの作成の作成に失敗。
    Write-Error -Message $_.Exception
}

リソース ビジュアライザー

補足

ストレージアカウントには大文字や記号を指定することはできない。

vmRG001sv01storage is not a valid storage account name. 
Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
vmRG001sv01storage は有効なストレージ アカウント名ではありません。 
ストレージ アカウントカウント名は 3 ~ 24 文字の長さで、数字と小文字のみを使用する必要があります。
この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です