Azure Stack Hub には、ディスク、BLOB、テーブル、キュー、アカウント管理機能用の一連のストレージ サービスが用意されています。 Azure Stack Hub Storage との間でデータを管理または移動する場合は、一部の Azure Storage ツールを使用できます。 この記事では、使用可能なツールの概要について説明します。
要件によって、次のツールのうち、最適なツールが決まります。
- AzCopy: ストレージ アカウント内またはストレージ アカウント間で、あるオブジェクトから別のオブジェクトにデータをコピーするためにダウンロードできるストレージ固有のコマンド ライン ユーティリティ。
- Azure PowerShell: 特にシステム管理用に設計されたタスク ベースのコマンド ライン シェルおよびスクリプト言語。
- Azure CLI: Azure および Azure Stack Hub プラットフォームを操作するための一連のコマンドを提供するオープンソースのクロスプラットフォーム ツール。
- Microsoft Azure Storage Explorer: ユーザー インターフェイスを備えた使いやすいスタンドアロン アプリ。
- Blobfuse: Azure Blob Storage の仮想ファイル システム ドライバー。これにより、Linux ファイル システムを介してストレージ アカウント内の既存のブロック BLOB データにアクセスできます。
Azure と Azure Stack Hub のストレージ サービスの違いにより、次のセクションで説明する各ツールに固有の要件が存在する可能性があります。 Azure Stack Hub Storage と Azure Storage の比較については、「 Azure Stack Hub Storage: 相違点と考慮事項」を参照してください。
AzCopy
AzCopy は、最適なパフォーマンスを備えた単純なコマンドを使用して、Microsoft Azure BLOB およびテーブル ストレージとの間でデータをコピーするように設計されたコマンドライン ユーティリティです。 ストレージ アカウント内またはストレージ アカウント間で、あるオブジェクトから別のオブジェクトにデータをコピーできます。
AzCopy のダウンロードとインストール
AzCopy 10.1 の構成と制限
AzCopy 10.1 は、古い API バージョンを使用するように構成できるようになりました。 これにより、Azure Stack Hub のサポートが (制限付き) できるようになります。
Azure Stack Hub をサポートするように AzCopy の API バージョンを構成するには、 AZCOPY_DEFAULT_SERVICE_API_VERSION 環境変数を 2017-11-09 に設定します。
| オペレーティング システム | コマンド |
|---|---|
| ウィンドウズ | コマンド プロンプトでは、set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09 を使用しますPowerShell では、次のコマンドを使用します。 $env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2017-11-09" |
| リナックス | export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09 |
| MacOS | export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09 |
AzCopy 10.1 では、Azure Stack Hub で次の機能がサポートされています。
| 特徴 | サポートされているアクション |
|---|---|
| コンテナーの管理 | コンテナーを作成する コンテナーの内容を一覧表示する |
| ジョブの管理 | ジョブの表示 ジョブを再開する |
| BLOB を削除する | 1 つの BLOB を削除する 仮想ディレクトリ全体または一部の仮想ディレクトリを削除する |
| ファイルをアップロードする | ファイルをアップロードする ディレクトリをアップロードする ディレクトリの内容をアップロードする |
| ファイルをダウンロードする | ファイルをダウンロードする ディレクトリをダウンロードする ディレクトリの内容をダウンロードする |
| ファイルの同期 | コンテナーをローカル ファイル システムに同期する ローカル ファイル システムをコンテナーに同期する |
注
Azure Stack Hub では、Microsoft Entra ID を使用した AzCopy への承認資格情報の提供はサポートされていません。 Shared Access Signature (SAS) トークンを使用して、Azure Stack Hub 上のストレージ オブジェクトにアクセスする必要があります。
Azure Stack Hub では、2 つの Azure Stack Hub BLOB の場所間、および Azure Storage と Azure Stack Hub の間の同期データ転送はサポートされていません。 azCopy 10.1 では、 azcopy cp を使用してデータを Azure Stack Hub から Azure Storage に (またはその逆の方法で) 直接移動することはできません。
データ転送の AzCopy コマンドの例
次の例は、Azure Stack Hub BLOB との間でデータをコピーする一般的なシナリオに従います。 詳細については、「 AzCopy の概要」を参照してください。
すべての BLOB をローカル ディスクにダウンロードする
azcopy cp "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" "/path/to/dir" --recursive=true
1 つのファイルを仮想ディレクトリにアップロードする
azcopy cp "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"
AzCopy の既知の問題
- ファイル ストレージは Azure Stack Hub でまだ使用できないため、ファイル ストレージに対する AzCopy 操作は使用できません。
- 2 つの Azure Stack Hub BLOB の場所間、または AzCopy 10.1 を使用して Azure Stack Hub と Azure Storage の間でデータを転送する場合は、まずデータをローカルの場所にダウンロードしてから、Azure Stack Hub または Azure Storage のターゲット ディレクトリに再度アップロードします。
- AzCopy の Linux バージョンでは、1802 更新プログラム以降のバージョンのみがサポートされます。Table service はサポートされていません。
- Azure Table Storage サービスとの間でデータをコピーする場合は、PowerShell、CLI、または Azure クライアント ライブラリを使用できます。
Azure PowerShell
Azure PowerShell は、Azure と Azure Stack Hub の両方でサービスを管理するためのコマンドレットを提供するモジュールです。 これは、特にシステム管理用に設計されたタスク ベースのコマンド ライン シェルおよびスクリプト言語です。
Azure Stack Hub 用の PowerShell のインストールと構成
Azure Stack Hub と互換性のある Azure PowerShell モジュールは、Azure Stack Hub を操作するために必要です。 詳細については、「 Azure Stack Hub 用の PowerShell をインストール する」および 「Azure Stack Hub ユーザーの PowerShell 環境を構成する」を参照してください。
Azure Stack Hub の PowerShell サンプル スクリプト
このサンプルでは、 PowerShell for Azure Stack Hub が正常にインストールされていることを前提としています。 このスクリプトは、構成を完了し、Azure Stack Hub テナントの資格情報を要求して、ローカルの PowerShell 環境にアカウントを追加するのに役立ちます。 その後、スクリプトは既定の Azure サブスクリプションを設定し、Azure に新しいストレージ アカウントを作成し、この新しいストレージ アカウントに新しいコンテナーを作成し、既存のイメージ ファイル (BLOB) をそのコンテナーにアップロードします。 スクリプトは、そのコンテナー内のすべての BLOB を一覧表示した後、ローカル コンピューターに新しい宛先ディレクトリを作成し、イメージ ファイルをダウンロードします。
- Azure Stack Hub と互換性のある Azure PowerShell モジュール インストールします。
- Azure Stack Hub を操作するために必要なツールをダウンロードします。
- Windows PowerShell ISE を開き、[管理者として実行] をクリックし、[ファイル>新規作成] をクリックして新しいスクリプト ファイルを作成します。
- 次のスクリプトをコピーし、新しいスクリプト ファイルに貼り付けます。
- 構成設定に基づいてスクリプト変数を更新します。
注
このスクリプトは、 AzureStack_Toolsのルート ディレクトリで実行する必要があります。
# begin
$ARMEvnName = "AzureStackUser" # set AzureStackUser as your Azure Stack Hub environment name
$ARMEndPoint = "https://management.local.azurestack.external"
$GraphAudience = "https://graph.windows.net/"
$AADTenantName = "<myDirectoryTenantName>.onmicrosoft.com"
$SubscriptionName = "basic" # Update with the name of your subscription.
$ResourceGroupName = "myTestRG" # Give a name to your new resource group.
$StorageAccountName = "azsblobcontainer" # Give a name to your new storage account. It must be lowercase.
$Location = "Local" # Choose "Local" as an example.
$ContainerName = "photo" # Give a name to your new container.
$ImageToUpload = "C:\temp\Hello.jpg" # Prepare an image file and a source directory in your local computer.
$DestinationFolder = "C:\temp\download" # A destination directory in your local computer.
# Import the Connect PowerShell module"
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Import-Module .\Connect\AzureStack.Connect.psm1
# Configure the PowerShell environment
# Register an Az environment that targets your Azure Stack Hub instance
Add-AzEnvironment -Name $ARMEvnName -ARMEndpoint $ARMEndPoint
# Login
$TenantID = Get-AzsDirectoryTenantId -AADTenantName $AADTenantName -EnvironmentName $ARMEvnName
Connect-AzAccount -EnvironmentName $ARMEvnName -TenantId $TenantID
# Set a default Azure subscription.
Select-AzSubscription -SubscriptionName $SubscriptionName
# Create a new Resource Group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
# Create a new storage account.
New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -Location $Location -Type Standard_LRS
# Set a default storage account.
Set-AzCurrentStorageAccount -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName
# Create a new container.
New-AzStorageContainer -Name $ContainerName -Permission Off
# Upload a blob into a container.
Set-AzStorageBlobContent -Container $ContainerName -File $ImageToUpload
# List all blobs in a container.
Get-AzStorageBlob -Container $ContainerName
# Download blobs from the container:
# Get a reference to a list of all blobs in a container.
$blobs = Get-AzStorageBlob -Container $ContainerName
# Create the destination directory.
New-Item -Path $DestinationFolder -ItemType Directory -Force
# Download blobs into the local destination directory.
$blobs | Get-AzureStorageBlobContent -Destination $DestinationFolder
# end
PowerShell の既知の問題
Get-AzStorageAccountKey の違い
Azure Stack Hub の現在の互換性のある Azure PowerShell モジュール バージョンは、ユーザー操作用の 1.2.11 です。 最新バージョンの Azure PowerShell とは異なります。 この違いは、次の方法でストレージ サービスの操作に影響します。
バージョン 1.2.11 の Get-AzStorageAccountKey の戻り値の形式には、 Key1 と Key2の 2 つのプロパティがあります。現在の Azure バージョンでは、すべてのアカウント キーを含む配列が返されます。
# This command gets a specific key for a storage account,
# and works for Azure PowerShell version 1.4, and later versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Value[0]
# This command gets a specific key for a storage account,
# and works for Azure PowerShell version 1.3.2, and previous versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Key1
詳細については、「 Get-AzureRMStorageAccountKey」を参照してください。
Azure Stack Hub クラスター間で BLOB をコピーする
Start-AzStorageBlobCopy を使用して、BLOB を移動するコピー ジョブを開始できます。 プロパティ AbsoluteUri を別の Azure Stack Hub クラスターの BLOB URI として設定する場合、このコマンドレットを使用して、2 つの Azure Stack Hub クラスター間で BLOB をコピーできます。 移行元と移行先の Azure Stack Hub クラスターが同じ更新バージョンにあることを確認します。 現在、Azure Stack Hub では、異なる更新バージョンをデプロイした 2 つの Azure Stack Hub クラスター間で BLOB をコピーするための Start-AzStorageBlobCopy の使用はサポートされていません。
Azure CLI(Azure コマンドライン インターフェイス)
Azure CLI は、Azure リソースを管理するための、Azure のコマンド ライン エクスペリエンスです。 macOS、Linux、Windows にインストールし、コマンド ラインから実行できます。
Azure CLI は、コマンド ラインから Azure リソースを管理し、Azure Resource Manager に対して動作する自動化スクリプトを構築するために最適化されています。 豊富なデータ アクセスなど、Azure Stack Hub ポータルにある同じ機能の多くが提供されます。
Azure Stack Hub には、Azure CLI バージョン 2.0 以降が必要です。 Azure Stack Hub を使用した Azure CLI のインストールと構成の詳細については、「Azure Stack Hub CLI のインストールと構成」を参照してください。 Azure CLI を使用して、Azure Stack Hub ストレージ アカウント内のリソースを操作するいくつかのタスクを実行する方法の詳細については、「Azure ストレージ での Azure CLI の使用」を参照してください。
Azure Stack Hub 用の Azure CLI サンプル スクリプト
CLI のインストールと構成が完了したら、次の手順を試して、Azure Stack Hub ストレージ リソースと対話するための小さなシェル サンプル スクリプトを操作できます。 このスクリプトは、次のアクションを完了します。
- ストレージ アカウントに新しいコンテナーを作成します。
- 既存のファイルを (BLOB として) コンテナーにアップロードします。
- コンテナー内のすべての BLOB を一覧表示します。
- 指定したローカル コンピューター上の保存先にファイルをダウンロードします。
このスクリプトを実行する前に、ターゲットの Azure Stack Hub に正常に接続してサインインできることを確認してください。
- お気に入りのテキスト エディターを開き、前のスクリプトをコピーしてエディターに貼り付けます。
- 構成設定を反映するようにスクリプトの変数を更新します。
- 必要な変数を更新したら、スクリプトを保存してエディターを終了します。 次の手順では、スクリプト my_storage_sample.shに名前が付けられていることを前提としています。
- 必要に応じて、スクリプトを実行可能ファイルとしてマークします。
chmod +x my_storage_sample.sh - スクリプトを実行します。 たとえば、Bash では次のようになります。
./my_storage_sample.sh
#!/bin/bash
# A simple Azure Stack Hub storage example script
export AZURESTACK_RESOURCE_GROUP=<resource_group_name>
export AZURESTACK_RG_LOCATION="local"
export AZURESTACK_STORAGE_ACCOUNT_NAME=<storage_account_name>
export AZURESTACK_STORAGE_CONTAINER_NAME=<container_name>
export AZURESTACK_STORAGE_BLOB_NAME=<blob_name>
export FILE_TO_UPLOAD=<file_to_upload>
export DESTINATION_FILE=<destination_file>
echo "Creating the resource group..."
az group create --name $AZURESTACK_RESOURCE_GROUP --___location $AZURESTACK_RG_LOCATION
echo "Creating the storage account..."
az storage account create --name $AZURESTACK_STORAGE_ACCOUNT_NAME --resource-group $AZURESTACK_RESOURCE_GROUP --account-type Standard_LRS
echo "Creating the blob container..."
az storage container create --name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME
echo "Uploading the file..."
az storage blob upload --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --file $FILE_TO_UPLOAD --name $AZURESTACK_STORAGE_BLOB_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME
echo "Listing the blobs..."
az storage blob list --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --output table
echo "Downloading the file..."
az storage blob download --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --name $AZURESTACK_STORAGE_BLOB_NAME --file $DESTINATION_FILE --output table
echo "Done"
Microsoft Azure Storage Explorer
Azure Storage Explorer は、Microsoft のスタンドアロン アプリです。 これにより、Windows、macOS、Linux コンピューター上の Azure Storage と Azure Stack Hub Storage の両方のデータを簡単に操作できます。 Azure Stack Hub Storage データを簡単に管理する方法が必要な場合は、Microsoft Azure Storage Explorer の使用を検討してください。
- Azure Stack Hub と連携するように Azure Storage Explorer を構成する方法の詳細については、「Storage Explorer を Azure Stack Hub サブスクリプションに接続する」を参照してください。
- Microsoft Azure Storage Explorer の詳細については、「 ストレージ エクスプローラーの概要」を参照してください。
blobfuse
Blobfuse は、Azure Blob Storage の仮想ファイル システム ドライバーです。これにより、Linux ファイル システムを介してストレージ アカウント内の既存のブロック BLOB データにアクセスできます。 Azure Blob Storage はオブジェクト ストレージ サービスであるため、階層型名前空間はありません。 Blobfuse は、仮想ディレクトリ スキームを使用してこの名前空間を提供し、スラッシュ / を区切り記号として使用します。 Blobfuse は、Azure と Azure Stack Hub の両方で機能します。
Linux 上の Blobfuse を使用して BLOB ストレージをファイル システムとしてマウントする方法の詳細については、「 Blobfuse を使用して Blob Storage をファイル システムとしてマウントする方法」を参照してください。
Azure Stack Hub の場合は、ストレージ アカウントの資格情報を accountName、accountKey/sasToken、containerName と共に構成するときに blobEndpoint を指定する必要があります。
Azure Stack Development Kit (ASDK) では、 blobEndpoint を myaccount.blob.local.azurestack.externalする必要があります。 Azure Stack Hub 統合システムで、エンドポイントが不明な場合は、クラウド管理者に問い合わせてください。
accountKey と sasToken は一度に 1 つだけ構成できます。 ストレージ アカウント キーを指定すると、資格情報の構成ファイルは次の形式になります。
accountName myaccount
accountKey myaccesskey==
containerName mycontainer
blobEndpoint myaccount.blob.local.azurestack.external
共有アクセス トークンを指定すると、資格情報の構成ファイルは次の形式になります。
accountName myaccount
sasToken ?mysastoken
containerName mycontainer
blobEndpoint myaccount.blob.local.azurestack.external