クイック スタート:PowerShell を使用して BLOB をアップロード、ダウンロード、および一覧表示する

Azure PowerShell モジュールを使用して Azure リソースを作成および管理します。 Azure リソースは、PowerShell コマンド ラインまたはスクリプトから作成または管理できます。 このガイドでは、PowerShell を使用してローカル ディスクと Azure Blob Storage の間でファイルを転送する方法について説明します。

前提条件

Azure Storage にアクセスするには、Azure サブスクリプションが必要です。 サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

また、Azure Storage コンテナーと BLOB の読み取り、書き込み、削除を行うには、ストレージ BLOB データ共同作成者ロールが必要です。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

このクイック スタートでは、Azure PowerShell モジュール Az バージョン 0.7 以降が必要です。 バージョンを確認するには、Get-InstalledModule -Name Az -AllVersions | select Name,Version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。

Azure へのサインイン

Connect-AzAccount コマンドを使用して Azure サブスクリプションにサインインし、画面上の指示に従います。

Connect-AzAccount

使用する場所がわからない場合、利用できる場所を一覧表示できます。 次のコード例を使用して場所の一覧を表示し、使用する場所を見つけます。 この例では、eastus を使います。 場所を変数に格納し、この変数を使用することで、1 か所で場所を変更できます。

Get-AzLocation | Select-Object -Property Location
$Location = 'eastus'

リソース グループを作成する

New-AzResourceGroup を使用して Azure リソース グループを作成します。 リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

$ResourceGroup = 'MyResourceGroup'
New-AzResourceGroup -Name $ResourceGroup -Location $Location

ストレージ アカウントの作成

New-AzStorageAccount を使用して、LRS レプリケーション付きの標準の汎用ストレージ アカウントを作成します。 次に、使用するストレージ アカウントを定義するストレージ アカウント コンテキストを取得します。 ストレージ アカウントを操作するときは、資格情報を繰り返し渡す代わりに、このコンテキストを参照します。 次の例を使用して、ローカル冗長ストレージ (LRS) と BLOB 暗号化機能 (既定で有効になります) を備える mystorageaccount というストレージ アカウントを作成します。

$StorageHT = @{
  ResourceGroupName = $ResourceGroup
  Name              = 'mystorageaccount'
  SkuName           = 'Standard_LRS'
  Location          =  $Location
}
$StorageAccount = New-AzStorageAccount @StorageHT
$Context = $StorageAccount.Context

コンテナーを作成する

BLOB は常にコンテナーにアップロードされます。 コンピューター上のファイルをフォルダーで整理するように、BLOB のグループを整理できます。

コンテナー名を設定し、New-AzStorageContainer を使用してコンテナーを作成します。 blob に対するアクセス許可を設定して、ファイルのパブリック アクセスを許可します。 この例でのコンテナー名は quickstartblobs です。

$ContainerName = 'quickstartblobs'
New-AzStorageContainer -Name $ContainerName -Context $Context -Permission Blob

BLOB をコンテナーにアップロードする

Blob Storage は、ブロック BLOB、追加 BLOB、およびページ BLOB をサポートします。 IaaS VM をバックアップするための VHD ファイルはページ BLOB です。 追加 BLOB は、ファイルに書き込んでからも情報を追加し続ける場合などの、ログ記録に使用します。 BLOB ストレージに格納されているほとんどのファイルはブロック BLOB です。

ファイルをブロック BLOB にアップロードするには、コンテナー参照を取得してから、そのコンテナー内のブロック BLOB への参照を取得します。 BLOB 参照を取得したら、Set-AzStorageBlobContent を使用して、それにデータをアップロードできます。 この処理により、BLOB が存在しない場合は作成され、存在する場合は上書きされます。

次の例では、ローカル ディスク上の D:\Images フォルダーの Image001.jpgImage002.png を作成したコンテナーにアップロードします。

# upload a file to the default account (inferred) access tier
$Blob1HT = @{
  File             = 'D:\Images\Image001.jpg'
  Container        = $ContainerName
  Blob             = "Image001.jpg"
  Context          = $Context
  StandardBlobTier = 'Hot'
}
Set-AzStorageBlobContent @Blob1HT
  
 # upload another file to the Cool access tier
 $Blob2HT = @{
  File             = 'D:\Images\Image002.jpg'
  Container        = $ContainerName
  Blob             = 'Image002.png'
  Context          = $Context
  StandardBlobTier = 'Cool'
 }
 Set-AzStorageBlobContent @Blob2HT
  
# upload a file to a folder to the Archive access tier
$Blob3HT = @{
  File             = 'D:\Images\FolderName\Image003.jpg'
  Container        = $ContainerName
  Blob             = 'FolderName/Image003.jpg'
  Context          = $Context
  StandardBlobTier = 'Archive'
}
Set-AzStorageBlobContent @Blob3HT


続行する前に、希望する数のファイルをアップロードします。

コンテナー内の BLOB を一覧表示する

Get-AzStorageBlob を使用して、コンテナー内の BLOB の一覧を取得します。 この例では、アップロードされた BLOB の名前だけを示しています。

Get-AzStorageBlob -Container $ContainerName -Context $Context |
  Select-Object -Property Name

BLOB をダウンロードする

BLOB をローカル ディスクにダウンロードします。 ダウンロードする BLOB ごとに名前を設定し、Get-AzStorageBlobContent を呼び出して BLOB をダウンロードします。

この例では、BLOB をローカル ディスク上の D:\Images\Downloads にダウンロードします。

# Download first blob
$DLBlob1HT = @{
  Blob        = 'Image001.jpg'
  Container   = $ContainerName
  Destination = 'D:\Images\Downloads\'
  Context     = $Context
}
Get-AzStorageBlobContent @DLBlob1HT

# Download another blob
$DLBlob2HT = @{
  Blob        = 'Image002.png'
  Container   = $ContainerName
  Destination = 'D:\Images\Downloads\'
  Context     = $Context  
}
Get-AzStorageBlobContent @DLBlob2HT

AzCopy でのデータ転送

AzCopy コマンド ライン ユーティリティは、Azure Storage に対する高速かつスクリプトで制御可能なデータ転送を実現します。 Blob Storage や Azure Files との間のデータ転送に AzCopy を使用できます。 最新バージョンである AzCopy v10 の詳細については、「AzCopy を使ってみる」を参照してください。 Blob Storage での AzCopy v10 の使用については、「AzCopy と Blob Storage でデータを転送する」を参照してください。

次の例では、AzCopy を使用してローカル ファイルを BLOB にアップロードします。 サンプルの値は忘れずに実際の値に置き換えてください。

azcopy login
azcopy copy 'D:\Images\Image001.jpg' "https://$StorageAccountName.blob.core.windows.net/$ContainerName/NewGaphic.jpg"

リソースをクリーンアップする

作成したすべての資産を削除します。 アセットを削除する最も簡単な方法は、リソース グループを削除することです。 リソース グループを削除すると、そのグループに含まれるすべてのリソースも削除されます。 次の例では、リソース グループを削除して、ストレージ アカウントとリソース グループ自体を削除しています。

Remove-AzResourceGroup -Name $ResourceGroup 

次のステップ

このクイックスタートでは、ローカル ファイル システムと Azure Blob Storage の間でファイルを転送しました。 PowerShell を使った BLOB ストレージの操作について詳しくは、以下のオプションを選んでください。

Microsoft Azure PowerShell Storage コマンドレット リファレンス

Microsoft Azure Storage Explorer