ストレージアカウントをPowerShellで作成する手順を紹介します。
ひとつふたつであればポータル(GUI)で作成してもよいですが、複数作成する場合は効率を考えてPowerShellを使用したいです。共通のパラメータ(例えば、IPやVNETによる接続元の制限など)を設定する必要がある場合にはなおさらです。
ストレージアカウントをPowerShellで作成
基本構文
New-AzStorageAccount コマンドを使用します。コマンド実行例は以下。
今回はAzure Files で使用する想定ですが、Standardであれば種類(Blob とか AzureFiles とか)を気にする必要はないです。
1 2 3 4 5 6 7 |
New-AzStorageAccount ` -ResourceGroupName pig-rg1 ` # リソースグループ名 -Name stpig0001 ` # ストレージアカウント名 -SkuName Standard_LRS ` # 冗長レベル(Standard_LRS / Standard_GRS 等、詳細は以下URL) -Location japaneast ` # リージョン -Kind StorageV2 ` # アカウントの種類 -MinimumTlsVersion TLS1_2 # TLSのバージョン(指定しない場合1.0で作成される)※GUIで作成する場合は1.2 |
※コマンド詳細
https://learn.microsoft.com/en-us/powershell/module/az.storage/new-azstorageaccount?view=azps-9.1.0
要件によってかわってくることが多いSkunameとKindは以下にも記載。
SKU
Standard_LRS. Locally-redundant storage.
Standard_ZRS. Zone-redundant storage.
Standard_GRS. Geo-redundant storage.
Standard_RAGRS. Read access geo-redundant storage.
Premium_LRS. Premium locally-redundant storage.
Premium_ZRS. Premium zone-redundant storage.
Standard_GZRS - Geo-redundant zone-redundant storage.
Standard_RAGZRS - Read access geo-redundant zone-redundant storage.Kind
Storage. General purpose Storage account that supports storage of Blobs, Tables, Queues, Files and Disks.
StorageV2. General Purpose Version 2 (GPv2) Storage account that supports Blobs, Tables, Queues, Files, and Disks, with advanced features like data tiering.
BlobStorage. Blob Storage account which supports storage of Blobs only.
BlockBlobStorage. Block Blob Storage account which supports storage of Block Blobs only.
FileStorage. File Storage account which supports storage of Files only. The default value is StorageV2.
※このふたつは依存関係があるので注意。例えば、" skuname:standard_XXX + kind:FileStorage "などの組み合わせはNGです。
パフォーマンスをPremiumで作成する
skuname と Kind を変更します。上にも書いた通り依存関係に注意。あと、Premiumの場合、リージョンごとにサポートされている冗長レベルがStandardと比較して制限のあることが多いので要確認。
1 2 3 4 5 6 7 |
New-AzStorageAccount ` -ResourceGroupName pig-rg1 ` -Name stpig0002 ` -SkuName Premium_LRS ` # Premium_XXX を指定する -Location japaneast ` -Kind FileStorage ` # FileStorageを指定する -MinimumTlsVersion TLS1_2 |
接続元ネットワークを制限して作成する
ネットワークルール( -NetworkRuleSet )を指定する
1 2 3 4 5 6 7 8 9 10 11 12 13 |
New-AzStorageAccount ` -ResourceGroupName pig-rg1 ` -Name stpig0001 ` -SkuName Standard_LRS ` -Location japaneast ` -Kind StorageV2 ` -MinimumTlsVersion TLS1_2 ` -NetworkRuleSet (@{bypass="AzureServices,Logging,Metrics";` ipRules=(@{IPAddressOrRange="xxx.xxx.xxx.xxx"},@{IPAddressOrRange="xxx.xxx.xxx.xxx"},@{IPAddressOrRange="xxx.xxx.xxx.xxx"});` virtualNetworkRules=(@{VirtualNetworkResourceId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/pig-rg1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1"}, @{VirtualNetworkResourceId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/pig-rg1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet2"}, @{VirtualNetworkResourceId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/pig-rg1/providers/Microsoft.Network/virtualNetworks/vnet2/subnets/subnet1"});` defaultAction="Deny"}) |
参考情報:
https://learn.microsoft.com/en-us/powershell/module/az.storage/new-azstorageaccount?view=azps-9.1.0#example-4-create-a-storage-account-with-networkruleset-from-json
bypass はストレージアカウントの ネットワーク > ファイアウォールと仮想ネットワーク >パブリックネットワークアクセス設定を「選択した仮想ネットワークとIPアドレスから有効」を選択した場合に現れる「例外」の設定でログやメトリックに対する読み取りアクセスを制限するかしないかの設定です。制限しない(bypassする)場合は指定します。
1 2 3 |
AzureServices:信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します。 Logging:すべてのネットワークからのストレージ ログに対する読み取りアクセスを許可します Metrics:すべてのネットワークからのストレージ メトリックに対する読み取りアクセスを許可します |
ipRules は許可するIPを指定します。CIDRでレンジの指定も可能です。
virtualNetworkRules は許可する仮想ネットワークを指定します。変更箇所は以下の4点。
・サブスクリプションID
・リソースグループ名
・仮想ネットワーク名
・サブネット名
連番で複数のストレージアカウントを作成
冒頭にも書いた通り、ひとつふたつくらいならGUIで作成すればよいが、たくさん作成する必要がある場合や作成する頻度の高い場合はPowerShellで作成したい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 付番 $n = 9..11 # 桁数を4桁に固定 $num_4d = $n | foreach { $_.tostring("0000") } # 指定した番号で作成をループ foreach ( $num in $num_4d ){ New-AzStorageAccount ` -ResourceGroupName pig-rg1 ` -Name stpig$num ` -SkuName Standard_LRS ` -Location japaneast ` -Kind StorageV2 ` -MinimumTlsVersion TLS1_2 } # 結果(標準出力) StorageAccountName ResourceGroupName PrimaryLocation SkuName Kind AccessTier CreationTime ProvisioningState EnableHttpsTrafficOnly LargeFileShares ------------------ ----------------- --------------- ------- ---- ---------- ------------ ----------------- ---------------------- --------------- stpig0009 pig-rg1 japaneast Standard_LRS StorageV2 Hot 2022/11/26 7:41:56 Succeeded True stpig0010 pig-rg1 japaneast Standard_LRS StorageV2 Hot 2022/11/26 7:42:23 Succeeded True stpig0011 pig-rg1 japaneast Standard_LRS StorageV2 Hot 2022/11/26 7:42:51 Succeeded True |
※リージョンや冗長レベルなどのパラメータは固定となるので、ストレージアカウントごとに可変としたい場合は、あらかじめパラメータを指定したCSVを作成しておいて読み込ませればOK
まとめ
PowerShellでストレージアカウントを作成する方法を説明しました。これで100個でも200個でも簡単に作成できますね。ちなみにサブスクリプションあたりのストレージアカウント作成可能数は256なのでご注意を。
Azure Files のファイル共有をPowerShellで作成する手順を以下のエントリで紹介していますのでどうぞ。
-
【Azure Files】ファイル共有をPowerShellで作成する。CSV読み込みもOK!
Azure Files のファイル共有を作成する際、ひとつふたつくらいならGUIで作成したほうが早いかもしれませんが、大量に作成するような場合はPowerShellで作成する選択肢もあるとよいですよね ...
では。