次の方法で共有


Azure PowerShell を使用した Azure Table Storage 操作の実行

ヒント

この記事の内容は、Azure Table Storage を対象としています。 ただし現在は、Table Storage の Premium プランである Azure Cosmos DB for Table が存在しており、スループットが最適化されたテーブル、グローバル配布、自動のセカンダリ インデックスが提供されています。 詳細を確認し、Premium 版を使ってみるには、Azure Cosmos DB for Table に関する記事を参照してください。 この記事のプログラミング言語は、Premium 版ではまだサポートされていませんが、今後追加される予定です。

Azure Table Storage は NoSQL データストアであり、これを使用することで、構造化された非リレーショナル データの巨大なセットを格納および照会できます。 このサービスのメイン コンポーネントは、テーブル、エンティティ、プロパティです。 テーブルは、エンティティのコレクションです。 エンティティは、プロパティのセットです。 各エンティティには、最大 252 個のプロパティを含めることができます。これらはすべて名前と値のペアです。 この記事では、Azure Table Storage サービスの概念について理解しているユーザーを対象としています。 詳しくは、「テーブル サービス データ モデルについて」および「.NET を使用して Azure Table Storage を使用する」をご覧ください。

このハウツー記事では、Azure Table Storage の一般的な操作について取り上げます。 学習内容は次のとおりです。

  • テーブルを作成する
  • テーブルを取得する
  • テーブル エンティティの追加
  • テーブルを照会する
  • テーブル エンティティを削除する
  • テーブルを削除する

このハウツー記事では、作業の完了後に簡単に削除できるように、新しいリソース グループに新しいストレージ アカウントを作成する方法について説明します。 既存のストレージ アカウントを使用することもできます。

例を実行するには、Az PowerShell モジュール Az.Storage (1.1.0 or greater) および Az.Resources (1.2.0 or greater) が必要です。 PowerShell ウィンドウで、Get-Module -ListAvailable Az* を実行して、バージョンを確認します。 何も表示されない場合や、アップグレードが必要な場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。

重要

PowerShell からこの Azure 機能を使用するには、Az モジュールがインストールされている必要があります。 AzTable の現在のバージョンは、以前の AzureRM モジュールと互換性がありません。 必要に応じて、Az モジュールの最新のインストール手順に従ってください。

モジュール名の互換性の理由から、PowerShell ギャラリーでは、このモジュールは AzureRmStorageTables という以前の名前でも公開されています。 このドキュメントでは、新しい名前のみを参照します。

Azure PowerShell をインストールまたは更新した後は、エンティティを管理するコマンドを含む AzTable モジュールをインストールする必要があります。 このモジュールをインストールするには、PowerShell を管理者として実行し、Install-Module コマンドを使用します。

Install-Module AzTable

テーブル データ操作の承認

AzTable PowerShell モジュールでは、共有キーによる承認を使用したアカウント アクセス キーによる承認がサポートされています。 この記事の例は、共有キーを使用してテーブル データ操作を承認する方法を示しています。

Azure Table Storage では、Microsoft Entra ID を使用した承認がサポートされています。 ただし、AzTable PowerShell モジュールでは、Microsoft Entra ID を使用した承認はネイティブにサポートされていません。 AzTable モジュールで Microsoft Entra ID を使用するには、PowerShell から .NET クライアント ライブラリのメソッドを呼び出す必要があります。

Azure へのサインイン

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

Add-AzAccount

場所の一覧を取得する

使用する場所がわからない場合、利用できる場所を一覧表示できます。 一覧が表示されたら、使用する場所を見つけます。 これらの例では、eastus を使用しています。 後で使用するために、この値を変数 location に保存します。

Get-AzLocation | select Location
$location = "eastus"

リソース グループの作成

New-AzResourceGroup コマンドでリソース グループを作成します。

Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 将来使用するために、リソース グループ名を変数に保存します。 この例では、pshtablesrg という名前のリソース グループを eastus リージョンに作成しています。

$resourceGroup = "pshtablesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

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

New-AzStorageAccount を使用して、ローカル冗長ストレージ (LRS) で標準の汎用ストレージ アカウントを作成します。 必ず一意のストレージ アカウント名を指定してください。 次に、ストレージ アカウントを表すコンテキストを取得します。 このコンテキストは、ストレージ アカウントで作業するときに参照できます。ご自身の資格情報を繰り返し入力する必要はありません。

$storageAccountName = "pshtablestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS `
  -Kind Storage

$ctx = $storageAccount.Context

新しいテーブルを作成する

テーブルを作成するには、New-AzStorageTable コマンドレットを使用します。 この例では、テーブル名として pshtesttable を使用しています。

$tableName = "pshtesttable"
New-AzStorageTable -Name $tableName -Context $ctx

ストレージ アカウントのテーブルの一覧を取得する

Get-AzStorageTable を使用して、ストレージ アカウントのテーブルの一覧を取得します。

Get-AzStorageTable -Context $ctx | select Name

特定のテーブルへの参照を取得する

テーブルに対して操作を実行するには、その特定のテーブルに対する参照が必要になります。 Get-AzStorageTable を使用して、参照を取得します。

$storageTable = Get-AzStorageTable -Name $tableName -Context $ctx

特定のテーブルの CloudTable プロパティを参照する

重要

AzTable PowerShell モジュールを使用してテーブル データを操作する場合は、CloudTable プロパティの使用が必須になります。 Get-AzStorageTable コマンドを呼び出して、このオブジェクトへの参照を取得します。

AzTable を使用してテーブルに対する操作を実行するには、特定のテーブルの CloudTable プロパティへの参照を返します。 CloudTable プロパティは、PowerShell からテーブル データを管理するために使用できる .NET メソッドを公開します。

$cloudTable = $storageTable.CloudTable

テーブル エンティティの管理

テーブルが準備できたので、エンティティ、またはテーブル内の行を管理する方法を見てみましょう。

エンティティは、最大 255 個のプロパティを含むことができます。これには、PartitionKeyRowKeyTimestamp の 3 個のシステム プロパティも含まれます。 PartitionKeyRowKey の値は、ご自身で挿入および更新する必要があります。 Timestamp の値はサーバーによって管理されます。この値は変更できません。 PartitionKeyRowKey が組み合わさって、テーブル内の各エンティティを一意に識別します。

  • PartitionKey: エンティティが格納されるパーティションを決定します。
  • RowKey: パーティション内のエンティティを一意に識別します。

1 個のエンティティに対して最大 252 個のカスタム プロパティを定義できます。

テーブル エンティティの追加

Add-AzTableRow を使用して、エンティティをテーブルに追加します。 これらの例では、partition1partition2 の値を持つパーティション キーおよび州コードと等しい行キーが使用されます。 各エンティティのプロパティは、usernameuserid です。

$partitionKey1 = "partition1"
$partitionKey2 = "partition2"

# add four rows 
Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("CA") -property @{"username"="Chris";"userid"=1}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("NM") -property @{"username"="Jessie";"userid"=2}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey1 `
    -rowKey ("WA") -property @{"username"="Christine";"userid"=3}

Add-AzTableRow `
    -table $cloudTable `
    -partitionKey $partitionKey2 `
    -rowKey ("TX") -property @{"username"="Steven";"userid"=4}

テーブル エンティティのクエリ

テーブル内のエンティティにクエリを実行するには、Get-AzTableRow コマンドを使用します。

Note

Get-AzureStorageTableRowAll コマンドレット、Get-AzureStorageTableRowByPartitionKey コマンドレット、Get-AzureStorageTableRowByColumnName コマンドレット、および Get-AzureStorageTableRowByCustomFilter コマンドレットは非推奨で、今後のバージョン更新で削除されます。

すべてのエンティティの取得

Get-AzTableRow -table $cloudTable | ft

このコマンドによって、次の表のような結果が生成されます。

userid username partition rowkey
1 Chris partition1 CA
3 Christine partition1 WA
2 Jessie partition2 NM
4 Steven partition2 TX

テーブル内のエンティティの数を取得する

$totalEntities=(Get-AzTableRow -table $cloudTable | measure).Count
Echo $totalEntities

このコマンドを実行すると、次のようにエンティティの数が返されます。

4

特定のパーティション キーのエンティティを取得する

Get-AzTableRow -table $cloudTable -partitionKey $partitionKey1 | ft

結果は次の表のようになります。

userid username partition rowkey
1 Chris partition1 CA
3 Christine partition1 WA

特定の列の特定の値のエンティティの取得

Get-AzTableRow -table $cloudTable `
    -columnName "username" `
    -value "Chris" `
    -operator Equal

このクエリは、1 つのレコードを取得します。

フィールド
userid 1
username Chris
パーティション キー partition1
行キー CA

カスタム フィルターを使用したエンティティの取得

Get-AzTableRow `
    -table $cloudTable `
    -customFilter "(userid eq 1)"

このクエリは、1 つのレコードを取得します。

フィールド
userid 1
username Chris
パーティション キー partition1
行キー CA

エンティティの更新

エンティティを更新するには 3 つの手順があります。 まず、変更するエンティティを取得します。 次に、変更を加えます。 その後、Update-AzTableRow を使用して変更をコミットします。

username = 'Jessie' のエンティティを username = 'Jessie2' になるように更新します。 この例では、.NET 型を使用してカスタム フィルターを作成する別の方法も示しています。

# Create a filter and get the entity to be updated.
[string]$filter = `
    [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
    [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie")
$user = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter

# Change the entity.
$user.username = "Jessie2"

# To commit the change, pipe the updated record into the update cmdlet.
$user | Update-AzTableRow -table $cloudTable

# To see the new record, query the table.
Get-AzTableRow -table $cloudTable `
    -customFilter "(username eq 'Jessie2')"

結果には、Jessie2 レコードが表示されます。

フィールド
userid 2
username Jessie2
パーティション キー partition2
行キー NM

テーブル エンティティの削除

1 つのエンティティまたはテーブル内のすべてのエンティティを削除することができます。

1 つのエンティティの削除

1 つのエンティティを削除するには、そのエンティティへの参照を取得し、Remove-AzTableRow にパイプします。

# Set filter.
[string]$filter = `
  [Microsoft.Azure.Cosmos.Table.TableQuery]::GenerateFilterCondition("username",`
  [Microsoft.Azure.Cosmos.Table.QueryComparisons]::Equal,"Jessie2")

# Retrieve entity to be deleted, then pipe it into the remove cmdlet.
$userToDelete = Get-AzTableRow `
    -table $cloudTable `
    -customFilter $filter
$userToDelete | Remove-AzTableRow -table $cloudTable

# Retrieve entities from table and see that Jessie2 has been deleted.
Get-AzTableRow -table $cloudTable | ft

テーブル内のすべてのエンティティの削除

テーブル内のすべてのエンティティを削除するには、それらのエンティティを取得し、結果を削除コマンドレットにパイプします。

# Get all rows and pipe the result into the remove cmdlet.
Get-AzTableRow `
    -table $cloudTable | Remove-AzTableRow -table $cloudTable 

# List entities in the table (there won't be any).
Get-AzTableRow -table $cloudTable | ft

テーブルを削除する

テーブルを削除するには、Remove-AzStorageTable を使用します。 このコマンドレットを実行すると、テーブルと、そのすべてのデータが削除されます。

Remove-AzStorageTable -Name $tableName -Context $ctx

# Retrieve the list of tables to verify the table has been removed.
Get-AzStorageTable -Context $Ctx | select Name

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

このハウツー記事に従って最初に新しいリソース グループとストレージ アカウントを作成している場合は、リソース グループを削除することで、この練習で作成したすべてのアセットを削除できます。 このコマンドを実行すると、リソース グループと、そのグループに含まれるすべてのリソースが削除されます。

Remove-AzResourceGroup -Name $resourceGroup

次のステップ

このハウツー記事では、次のような、PowerShell を使用した Azure Table Storage の一般的な操作について学習しました。

  • テーブルを作成する
  • テーブルを取得する
  • テーブル エンティティの追加
  • テーブルを照会する
  • テーブル エンティティを削除する
  • テーブルを削除する

詳細については、次の記事を参照してください。