はじめに
Azure初心者です。 過去AWSのみ利用していました。
AzureCLIを用いて、オブジェクトストレージのAzureBLOBStorageを構築する際の記録です。
記載内容や画像は、公式ドキュメントを参照しています。
環境
Windows10/PowerShell
AzureStorageについて
AzureStorage = AWS S3 だと思っていたのだが、どうやら違うらしい。
AzureStorageは、以下のようなサービスを含むサービス群(?)であり、その中のAzureBLOBStorage
がAWS S3のようなオブジェクトストレージに該当するサービス。
サービス | 説明 |
---|---|
Azure BLOB | テキストおよびバイナリ データのための高度にスケーラブルなオブジェクト ストア |
Azure ファイル | クラウドまたはオンプレミスのデプロイ用のマネージド ファイル共有 |
Azure キュー | アプリケーション コンポーネント間の信頼性の高いメッセージングのためのメッセージング ストア |
Azure テーブル | 構造化データのスキーマレス ストレージのための NoSQL ストア |
スペックについて
AzureStorageを作成するにあたって、性能と冗長性の二面から選択する必要がある。
StandardのLRS
を使うのが一番安い
性能
分類 | 説明 |
---|---|
Standard | 通常のストレージ 安価 |
Premium | 高トランザクション レートに最適化されたストレージ 高価 |
冗長性
分類 | 日本語名称 | 役割 |
---|---|---|
LRS | ローカル冗長ストレージ | シンプルな低コストのレプリケーション 安価 |
ZRS | ゾーン冗長ストレージ | 1つのリージョン内の3つのストレージクラスターでのレプリケーション |
GRS | geo 冗長ストレージ | リージョン全体のサービス停止に備えたリージョン間レプリケーション |
GZRS | geo ゾーン冗長ストレージ | ZRSの高可用性と、GRSによって提供されるリージョン障害からの保護を融合させたレプリケーション |
RA-GRS | 読み取りアクセス geo 冗長ストレージ | 読み取りアクセスも冗長化したGRS リージョンがダウンしても読み取り可能 |
RA-GZRS | 読み取りアクセス geo ゾーン冗長ストレージ | 読み取りアクセスも冗長化したGZRS リージョンがダウンしても読み取り可能 |
AzureBLOBStorageの構成
アカウント:AzureStorageアカウント
コンテナー:S3のバケットのようなもの
BLOB:各ファイル
CLIでの構築
構築の流れ
- ResouseGroupe の作成
- AzureStorageの作成
- 認証情報の設定
- コンテナの作成
- ファイルのアップデート/ダウンロード/削除
Resouse Groupe の作成
リソース グループ
Azure ソリューションの関連するリソースを保持するコンテナー。 リソース グループには、グループとして管理するリソースが含まれます。 組織にとって最も有用になるように、どのリソースをリソース グループに含めるかを決定します。
Azureの各リソースは、リソースグループの配下に構築するようなので、リソースグループの作成から行う。
作成
az group create --name <resource_groupe> --location <location>
確認
az group list --output table
Name Location Status
---------------- ------------- ---------
<resource_groupe> southeastasia Succeeded
<resource_groupe> japaneast Succeeded
Azure Storageの作成
作成
storage作成のテンプレート
az storage account create \
--location <location> \
--name <account_name> \
--resource-group <resource_group> \
--sku <account_sku>
--kind <storage_type>
location[必須]: 場所 japaneast
など
name[必須]: ストレージアカウント名 英小文字と数字のみで、文字数は 3 ~ 24 文字
resource-group: リソースグループの名前 configureに設定されていれば不要
sku: ストレージアカウントのSKU デフォルトは、Standard_RAGRS
→ Standard_LRS
が安いから変更
kind: ストレージのタイプ デフォルトはStorage
→ 今後 StorageV2
に統一されるようなので変更
SKU(Stock Keeping Unit):価格レベル
Premium_LRS, Premium_ZRS, Standard_GRS, Standard_GZRS,
Standard_LRS, Standard_RAGRS, Standard_RAGZRS, Standard_ZRS
az storage account create \
--location japaneast \
--name <storage_name> \
--resource-group <resource_group> \
--sku Standard_LRS \
--kind StorageV2
確認
az storage account list --output table
AccessTier CreationTime EnableHttpsTrafficOnly Kind Location Name PrimaryLocation ProvisioningState ResourceGroup StatusOfPrimary
------------ -------------------------------- ------------------------ --------- ---------- -------------- ----------------- ------------------- ------------------- -----------------
Hot 2019-10-29T03:49:54.557112+00:00 True StorageV2 japaneast <storage_name> japaneast Succeeded <resource_group> available
認証情報の設定
以降の作業では認証情報が必要なので、環境変数に埋め込む。
認証情報取得
az storage account keys list --account-name <account_name> --resource-group <resource_group> --output table
KeyName Permissions Value
--------- ------------- ----------------------------
key1 Full ****************************
key2 Full ****************************
環境変数への埋め込み
下記一時的な環境変数への埋め込みのため、必要であれば永続的に設定してください。
$env:AZURE_STORAGE_ACCOUNT="<account_name>"
$env:AZURE_STORAGE_KEY="<account_key>"
コンテナの作成
作成
az storage container create --name <container_name>
認証情報設定していない場合は、--account-name
--account-key
を付与する。(以降のコマンドすべて)
az storage container create --name <container_name> --account-name <account_name> --account-key <account_key>
確認
az storage container list --output table
Name Lease Status Last Modified
---------------- -------------- -------------------------
<container_name> unlocked 2019-10-29T04:44:11+00:00
ファイルのアップデート/ダウンロード/削除
アップロード
az storage blob upload
--container-name <container_name> \
--file <file_path> \
--name <blob_name>
ダウンロード
az storage blob download
--container-name <container_name> \
--file <file_path> \
--name <blob_name>
削除
az storage blob delete
--container-name <container_name> \
--name <blob_name>
確認
az storage blob list --container-name <container_name> --output table
Name Blob Type Blob Tier Length Content Type Last Modified Snapshot
--------- ----------- ----------- -------- -------------- ------------------------- ----------
<name> BlockBlob Hot 9763 image/png 2019-10-29T06:48:43+00:00