.NET 用 Azure Storage BLOB 変更フィード クライアント ライブラリ - バージョン 12.0.0-preview.40
サーバー バージョン: 2021-02-12、 2020-12-06、2020-10-02、2020-08-04、2020-06-12 2020-04-08、2020-02-10、および 2019-12-12
変更フィードの目的は、ストレージ アカウント内の BLOB と BLOB メタデータに対して行われるすべての変更のトランザクション ログを提供することです。 変更フィードでは、これらの変更の順序指定済み、保証済み、永続、不変、読み取り専用ログが提供されます。 クライアント アプリケーションは、これらのログをいつでも読み取ることができます。 変更フィードを使用すると、低コストで、BLOB ストレージ アカウントで発生する変更イベントを処理する効率的でスケーラブルなソリューションを構築できます。
ソースコード | パッケージ (NuGet) | 製品ドキュメント
作業の開始
パッケージをインストールする
NuGet を使用して .NET 用の Azure Storage BLOB クライアント ライブラリをインストールします。
dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease
前提条件
このパッケージを使用するには、 Azure サブスクリプション と ストレージ アカウント が必要です。
新しいストレージ アカウントを作成するには、Azure Portal、Azure PowerShell、または Azure CLI を使用できます。 Azure CLI を使う例を次に示します。
az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS
クライアントを認証する
認証は 、Azure.Storage.Blobs と同じように機能します。
主要な概念
変更フィードは、Standard BLOB の料金コストで、ストレージ アカウントの特別なコンテナーに BLOB として格納されます。 これらのファイルの保有期間は、要件に基づいて制御できます (現在のリリースの条件を参照)。 変更イベントは、Apache Avro 形式仕様のレコードとして変更フィードに追加されます。これは、インライン スキーマを使用して豊富なデータ構造を提供するコンパクトで高速なバイナリ形式です。 この形式は Hadoop エコシステム、Stream Analytics、Azure Data Factory で幅広く使用されています。
これらのログは、増分または完全に処理できます。 任意の数のクライアント アプリケーションで、個別に変更フィードを並列で、および独自のペースで読み取ることができます。 Apache Drill や Apache Spark などの分析アプリケーションでは、Avro ファイルとして直接ログを使用できます。これにより、低コストで、また高帯域幅で処理することができ、カスタム アプリケーションを作成する必要はありません。
スレッド セーフ
すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、クライアント インスタンスの再利用に関する推奨事項は、スレッド間でも常に安全になります。
その他の概念
クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間
例
変更フィード内のすべてのイベントを取得する
// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
changeFeedEvents.Add(changeFeedEvent);
}
開始時刻と終了時刻の間にイベントを取得する
// Create the start and end time. The change feed client will round start time down to
// the nearest hour, and round endTime up to the next hour if you provide DateTimeOffsets
// with minutes and seconds.
DateTimeOffset startTime = new DateTimeOffset(2017, 3, 2, 15, 0, 0, TimeSpan.Zero);
DateTimeOffset endTime = new DateTimeOffset(2020, 10, 7, 2, 0, 0, TimeSpan.Zero);
// You can also provide just a start or end time.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
start: startTime,
end: endTime))
{
changeFeedEvents.Add(changeFeedEvent);
}
continuationToken を使用して再開する
string continuationToken = null;
await foreach (Page<BlobChangeFeedEvent> page in changeFeedClient.GetChangesAsync().AsPages(pageSizeHint: 10))
{
foreach (BlobChangeFeedEvent changeFeedEvent in page.Values)
{
changeFeedEvents.Add(changeFeedEvent);
}
// Get the change feed continuation token. The continuation token is not required to get each page of events,
// it is intended to be saved and used to resume iterating at a later date.
continuationToken = page.ContinuationToken;
break;
}
// Resume iterating from the pervious position with the continuation token.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
continuationToken: continuationToken))
{
changeFeedEvents.Add(changeFeedEvent);
}
トラブルシューティング
すべての BLOB サービス操作では、障害発生時に RequestFailedException がスローされ、役に立ちますErrorCode
。 これらのエラーの多くは回復可能です。
次のステップ
変更フィードのサンプルの概要:
- Hello World: ストレージ アカウントで発生した (または非同期的に) 変更を取得する
- 認証: 接続文字列、パブリック アクセス、共有キー、共有アクセス署名、Azure Active Directory で認証します。
共同作成
このライブラリのビルド、テスト、および投稿の詳細については、「 Storage CONTRIBUTING.md 」を参照してください。
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。
このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。