Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

AzureCLIでAzureBLOBStorageの構築

More than 1 year has passed since last update.

はじめに

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の構成

blob1.png

アカウント:AzureStorageアカウント
コンテナー:S3のバケットのようなもの
BLOB:各ファイル

CLIでの構築

構築の流れ
1. ResouseGroupe の作成
2. AzureStorageの作成
3. 認証情報の設定
4. コンテナの作成
5. ファイルのアップデート/ダウンロード/削除

Resouse Groupe の作成

scope-levels.png

リソース グループ
Azure ソリューションの関連するリソースを保持するコンテナー。 リソース グループには、グループとして管理するリソースが含まれます。 組織にとって最も有用になるように、どのリソースをリソース グループに含めるかを決定します。

Azureの各リソースは、リソースグループの配下に構築するようなので、リソースグループの作成から行う。

作成

input
az group create --name <resource_groupe> --location <location>

確認

input
az  group list --output table
output
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

input
az storage account create \
    --location japaneast \
    --name <storage_name> \
    --resource-group <resource_group> \
    --sku Standard_LRS \
    --kind StorageV2

確認

input
az storage account list --output table
output
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

認証情報の設定

以降の作業では認証情報が必要なので、環境変数に埋め込む。

認証情報取得

input
az storage account keys list --account-name <account_name> --resource-group <resource_group> --output table
output
KeyName    Permissions    Value
---------  -------------  ----------------------------
key1       Full           ****************************
key2       Full           **************************** 

環境変数への埋め込み

下記一時的な環境変数への埋め込みのため、必要であれば永続的に設定してください。

input
$env:AZURE_STORAGE_ACCOUNT="<account_name>"
$env:AZURE_STORAGE_KEY="<account_key>"

コンテナの作成

作成

input
az storage container create --name <container_name>

認証情報設定していない場合は、--account-name --account-keyを付与する。(以降のコマンドすべて)

input
az storage container create --name <container_name>  --account-name <account_name> --account-key <account_key>

確認

output
az storage container list --output table
output
Name              Lease Status    Last Modified
----------------  --------------  -------------------------
<container_name>  unlocked        2019-10-29T04:44:11+00:00

ファイルのアップデート/ダウンロード/削除

アップロード

input
az storage blob upload
    --container-name <container_name> \
    --file <file_path> \
    --name <blob_name>

ダウンロード

input
az storage blob download
    --container-name <container_name> \
    --file <file_path> \
    --name <blob_name>

削除

input
az storage blob delete
    --container-name <container_name> \
    --name <blob_name>

確認

input
az storage blob list --container-name <container_name> --output table
output
Name       Blob Type    Blob Tier    Length    Content Type    Last Modified              Snapshot
---------  -----------  -----------  --------  --------------  -------------------------  ----------
<name>     BlockBlob    Hot          9763      image/png       2019-10-29T06:48:43+00:00
kadoi82uma
エンジニア 文章をうまく書けるようになりたい
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away