JavaScript 用 Azure Tables クライアント ライブラリ - バージョン 13.3.0
Azure Tables は、構造化された NoSQL データを格納するクラウドベースのサービスであり、スキーマレス設計でキー/属性ストアを提供します。 Tables Storage を使用すると、開発者は Azure クラウドのすべての最適な部分で柔軟性とスケーラビリティを実現できます。
クライアント ライブラリを使用して、次の手順を実行します。
- テーブルの作成/削除
- エンティティのクエリ/作成/読み取り/更新/削除
Azure Cosmos DB には、Azure Table Storage 用に記述され、次のような Premium 機能が必要なアプリケーション用の Table API が用意されています。
- ターンキー グローバル分散。
- 世界中の専用スループット。
- 99 パーセンタイルでの 1 桁ミリ秒の待機時間。
- 高可用性が保証されます。
- セカンダリ インデックスの自動作成。
- Azure Tables クライアント ライブラリは、コードを変更せず、Azure Table Storage または Azure Cosmos DB Table Service エンドポイントをシームレスにターゲットにすることができます。
主要なリンク:
- ソース コード の
- パッケージ (NPM)
- API リファレンス ドキュメントの
- 製品のドキュメント
- サンプル
はじめ
前提 条件
現在サポートされている環境:
- Node.js の LTS バージョン
- Safari、Chrome、Edge、Firefox の最新バージョン
このパッケージを使用するには、Azure サブスクリプション と ストレージ アカウント または Azure CosmosDB データベース が必要です。
@azure/data-tables
パッケージをインストールする
JavaScript 用の Azure Tables クライアント ライブラリをインストールする場合は、npm パッケージ マネージャーを使用することをお勧めします。 ターミナル ウィンドウに次のように入力します。
npm install @azure/data-tables
TableServiceClient
を認証する
Azure Tables では、いくつかの認証方法がサポートされています。 Azure Tables サービスと対話するには、テーブル クライアントのインスタンス (TableServiceClient
や TableClient
など) を作成する必要があります。 認証の詳細については、
注: Azure Active Directory (AAD) は、Azure Storage アカウントでのみサポートされています。
- 共有キー を使用したサービス クライアントの
- Shared Access Signature を使用したサービス クライアントの
- TokenCredential (AAD) を使用したサービス クライアントの
- 共有キー を使用した Table クライアントの
- Shared Access Signature を使用して Table クライアントを
する - TokenCredential (AAD) を使用したテーブル クライアントの
次の機能、インターフェイス、クラス、または関数は、Node.js でのみ使用できます
- アカウント名とアカウント キーに基づく共有キーの承認
AzureNamedKeyCredential
- アカウント接続文字列。
JavaScript バンドル
ブラウザーでこのクライアント ライブラリを使用するには、まず、バンドルを使用する必要があります。 これを行う方法の詳細については、
CORS
ブラウザー用に開発する必要がある場合は、ストレージ アカウント クロスオリジン リソース共有 (CORS) 規則を設定する必要があります。 Azure portal と Azure Storage Explorer に移動し、ストレージ アカウントを見つけ、BLOB/キュー/ファイル/テーブル サービス用の新しい CORS ルールを作成します。
たとえば、デバッグ用に次の CORS 設定を作成できます。 ただし、運用環境の要件に合わせて設定を慎重にカスタマイズしてください。
- 許可される配信元: *
- 使用できる動詞: DELETE、GET、HEAD、MERGE、POST、OPTIONS、PUT
- 許可されるヘッダー: *
- 公開されたヘッダー: *
- 最長有効期間 (秒): 86400
主な概念
TableServiceClient
- テーブルの作成、一覧表示、削除などの Table Service レベルで対話する関数を提供するクライアントTableClient
- テーブル内のエンティティの作成、一覧表示、削除などのエンティティ レベルで対話する関数を提供するクライアント。Table
- テーブルには、エンティティのコレクションとしてデータが格納されます。Entity
- エンティティは行に似ています。 エンティティには、主キーと一連のプロパティがあります。 プロパティは、列に似た名前と型指定された値のペアです。
Table service の一般的な用途は次のとおりです。
- Web スケール アプリケーションに対応できる構造化データの TB の格納
- 複雑な結合、外部キー、またはストアド プロシージャを必要とせず、高速アクセスのために正規化解除できるデータセットの格納
- クラスター化インデックスを使用したデータの迅速なクエリ
- OData プロトコル フィルター式を使用したデータへのアクセス
例
- パッケージ をインポート
- Table Service クライアント を作成する
-
テーブル クライアント を作成する
- テーブル 内のエンティティの一覧表示を
する - 新しいエンティティを作成してテーブルに追加
- テーブル 内のエンティティの一覧表示を
パッケージをインポートする
クライアントを使用するには、ファイルにパッケージをインポートします。
const AzureTables = require("@azure/data-tables");
または、必要な型のみを選択的にインポートします。
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
Table service クライアントを作成する
TableServiceClient
には、Table Service への URL とアクセス資格情報が必要です。 また、必要に応じて、options
パラメーターの一部の設定を受け入れます。
AzureNamedKeyCredential を使用した TableServiceClient
アカウント名とアカウント キーを引数として渡すことで、AzureNamedKeyCredential
を使用して TableServiceClient
をインスタンス化できます。 (アカウント名とアカウント キーは、Azure portal から取得できます)。[NODE.JS ランタイムでのみ使用可能]
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
TokenCredential (AAD) を使用した TableServiceClient
Azure Tables は、ストレージ エンドポイントを対象とする場合に Table Service への要求を ID ベースで認証するために、Azure Active Directory (Azure AD) と統合します。 Azure AD では、ロールベースのアクセス制御 (RBAC) を使用して、ユーザー、グループ、またはアプリケーションに Azure Table リソースへのアクセスを許可できます。
TokenCredential
を使用してテーブル リソースにアクセスするには、認証された ID に "ストレージ テーブル データ共同作成者" ロールまたは "ストレージ テーブル データ閲覧者" ロールが必要です。
@azure/identity
パッケージを使用すると、開発環境と運用環境の両方で要求をシームレスに承認できます。
Azure Storage での Azure AD 統合の詳細については、Azure.Identity README
const { TableServiceClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const clientWithAAD = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
SAS トークンを使用した TableServiceClient
また、共有アクセス署名 (SAS) を使用して TableServiceClient
をインスタンス化することもできます。 SAS トークンは、Azure Portal から取得できます。
const { TableServiceClient, AzureSASCredential } = require("@azure/data-tables");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const serviceClientWithSAS = new TableServiceClient(
`https://${account}.table.core.windows.net`,
new AzureSASCredential(sas)
);
アカウント内のテーブルを一覧表示する
listTables
関数を呼び出す TableServiceClient
インスタンスを使用して、アカウント内のテーブルを一覧表示できます。 この関数は、for-await-of
を使用して使用できる PageableAsyncIterator
を返します。
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tablesIter = serviceClient.listTables();
let i = 1;
for await (const table of tablesIter) {
console.log(`Table${i}: ${table.name}`);
i++;
// Output:
// Table1: testTable1
// Table1: testTable2
// Table1: testTable3
// Table1: testTable4
// Table1: testTable5
}
}
main();
新しいテーブルを作成する
createTable
関数を呼び出す TableServiceClient
インスタンスを使用してテーブルを作成できます。 この関数は、パラメーターとして作成するテーブルの名前を受け取ります。
テーブルが既に存在する場合、createTable
はエラーをスローしません。
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tableName = `newtable`;
// If the table 'newTable' already exists, createTable doesn't throw
await serviceClient.createTable(tableName);
}
main();
テーブルを作成しようとしたときにテーブルが既に存在するかどうかをテストする方法を示すサンプルを次に示します。
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tableName = `newtable${new Date().getTime()}`;
await serviceClient.createTable(tableName, {
onResponse: (response) => {
if (response.status === 409) {
console.log(`Table ${tableName} already exists`);
}
}
});
}
main();
テーブル クライアントを作成する
TableClient
は、テーブル名をパラメーターとして受け取る TableClient
違いを持つ TableServiceClient
と同様の方法で作成されます
AzureNamedKeyCredential
を使用した TableClient
アカウント名とアカウント キーを引数として渡すことで、AzureNamedKeyCredential
を使用して TableClient
をインスタンス化できます。 (アカウント名とアカウント キーは、Azure portal から取得できます)。[NODE.JS ランタイムでのみ使用可能]
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
// Use AzureNamedKeyCredential with storage account and account key
// AzureNamedKeyCredential is only available in Node.js runtime, not in browsers
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
TokenCredential
を使用した TableClient
(Azure Active Directory)
Azure Tables は、ストレージ エンドポイントを対象とする場合に Table Service への要求を ID ベースで認証するために、Azure Active Directory (Azure AD) と統合します。 Azure AD では、ロールベースのアクセス制御 (RBAC) を使用して、ユーザー、グループ、またはアプリケーションに Azure Table リソースへのアクセスを許可できます。
TokenCredential
を使用してテーブル リソースにアクセスするには、認証された ID に "ストレージ テーブル データ共同作成者" ロールまたは "ストレージ テーブル データ閲覧者" ロールが必要です。
@azure/identity
パッケージを使用すると、開発環境と運用環境の両方で要求をシームレスに承認できます。
Azure Storage での Azure AD 統合の詳細については、Azure.Identity README
const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";
const clientWithAAD = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
credential
);
SAS トークンを使用した TableClient
共有アクセス署名 (SAS) を使用して TableClient
をインスタンス化できます。 SAS トークンは、Azure Portal から取得できます。
const { TableClient, AzureSASCredential } = require("@azure/data-tables");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const tableName = "<tableName>";
const clientWithSAS = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
new AzureSASCredential(sas)
);
TokenCredential (AAD) を使用した TableClient
Azure Tables は、ストレージ エンドポイントを対象とする場合に Table Service への要求を ID ベースで認証するために、Azure Active Directory (Azure AD) と統合します。 Azure AD では、ロールベースのアクセス制御 (RBAC) を使用して、ユーザー、グループ、またはアプリケーションに Azure Table リソースへのアクセスを許可できます。
TokenCredential
を使用してテーブル リソースにアクセスするには、認証された ID に "ストレージ テーブル データ共同作成者" ロールまたは "ストレージ テーブル データ閲覧者" ロールが必要です。
@azure/identity
パッケージを使用すると、開発環境と運用環境の両方で要求をシームレスに承認できます。
Azure Storage での Azure AD 統合の詳細については、Azure.Identity README
const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";
const clientWithAAD = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
credential
);
テーブル内のエンティティを一覧表示する
listEntities
関数を呼び出す TableClient
インスタンスを使用して、テーブル内のエンティティを一覧表示できます。 この関数は、for-await-of
を使用して使用できる PageableAsyncIterator
を返します。
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
async function main() {
const entitiesIter = client.listEntities();
let i = 1;
for await (const entity of entitiesIter) {
console.log(`Entity${i}: PartitionKey: ${entity.partitionKey} RowKey: ${entity.rowKey}`);
i++;
// Output:
// Entity1: PartitionKey: P1 RowKey: R1
// Entity2: PartitionKey: P2 RowKey: R2
// Entity3: PartitionKey: P3 RowKey: R3
// Entity4: PartitionKey: P4 RowKey: R4
}
}
main();
新しいエンティティを作成してテーブルに追加する
createEntity
関数を呼び出す TableClient
インスタンスを使用して、テーブルに新しいエンティティを作成できます。 この関数は、パラメーターとして挿入するエンティティを受け取ります。 エンティティには、partitionKey
と rowKey
が含まれている必要があります。
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
async function main() {
const testEntity = {
partitionKey: "P1",
rowKey: "R1",
foo: "foo",
bar: 123
};
await client.createEntity(testEntity);
}
main();
Azurite とストレージ エミュレーター
Azure Tables Client SDK は、Azure Storage および Tables API 互換サーバー エミュレーターである Azurite でも動作します。 使用を開始する方法については、(Azurite リポジトリ) を参照してください。
接続文字列ショートカットを使用して Azurite に接続する
アプリケーションから Azurite に接続する最も簡単な方法は、ショートカット UseDevelopmentStorage=true
を参照する接続文字列を構成することです。 ショートカットは、各 Azure Storage サービスのアカウント名、アカウント キー、エミュレーター エンドポイントを指定するエミュレーターの完全な接続文字列と同じです (詳細については、を参照してください)。 このショートカットを使用すると、Azure Tables Client SDK によって既定の接続文字列が設定され、クライアント オプションに allowInsecureConnection
されます。
import { TableClient } from "@azure/data-tables";
const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");
接続文字列ショートカットなしで Azurite に接続する
サービス URL と AzureNamedKeyCredential
またはカスタム接続文字列を指定することで、接続文字列ショートカットを使用せずに azurite に手動で接続できます。 ただし、Azurite が http
エンドポイントで実行される場合は、allowInsecureConnection
を手動で設定する必要があります。
import { TableClient, AzureNamedKeyCredential } from "@azure/data-tables";
const client = new TableClient(
"<Azurite-http-table-endpoint>",
"myTable",
new AzureNamedKeyCredential("<Azurite-account-name>", "<Azurite-account-key>"),
{ allowInsecureConnection: true }
);
トラブルシューティング
全般
Javascript/Typescript SDK を使用して Tables サービスと対話する場合、サービスによって返されるエラーは、REST API 要求に対して返されるのと同じ HTTP 状態コードに対応します。Storage Table Service エラー コード
伐採
ログ記録を有効にすると、エラーに関する有用な情報を明らかにするのに役立つ場合があります。 HTTP 要求と応答のログを表示するには、AZURE_LOG_LEVEL
環境変数を info
に設定します。 または、@azure/logger
で setLogLevel
を呼び出すことによって、実行時にログを有効にすることもできます。
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
次の手順
近日公開予定のその他のコード サンプル問題#10531
貢献
このプロジェクトは、投稿と提案を歓迎します。 ほとんどの投稿では、お客様が投稿を使用する権利を当社に付与する権利を有し、実際に行うことを宣言する共同作成者ライセンス契約 (CLA) に同意する必要があります。 詳細については、https://cla.microsoft.comを参照してください。
プル要求を送信すると、CLA ボットは、CLA を提供し、PR を適切に装飾する必要があるかどうかを自動的に判断します (ラベル、コメントなど)。 ボットによって提供される指示に従うだけです。 これは、CLA を使用するすべてのリポジトリで 1 回だけ行う必要があります。
このプロジェクトでは、Microsoft オープン ソースの行動規範を採用しています。 詳細については、行動規範に関する FAQ を参照するか、その他の質問やコメントを opencode@microsoft.com にお問い合わせください。
このライブラリに投稿する場合は、コードをビルドしてテストする方法の詳細については、投稿ガイド を参照してください。
Azure SDK for JavaScript