JavaScript용 Azure Storage Blob 변경 피드 클라이언트 라이브러리 - 버전 12.0.0-preview.4

서버 버전: 2019-12-12 이상.

변경 피드는 스토리지 계정의 Blob 및 Blob 메타데이터에 발생하는 모든 변경 내용의 순서가 지정되고, 보장되고, 지속적이고, 변경할 수 없는 읽기 전용 트랜잭션 로그를 제공합니다. 클라이언트 애플리케이션은 언제든지 이러한 로그를 읽을 수 있습니다. 변경 피드를 사용하면 Blob Storage 계정에서 발생하는 변경 이벤트를 저렴한 비용으로 처리하는 효율적이고 확장 가능한 솔루션을 빌드할 수 있습니다.

이 프로젝트는 변경 피드를 쉽게 사용할 수 있는 JavaScript의 클라이언트 라이브러리를 제공합니다.

이 패키지의 클라이언트 라이브러리를 사용하여 다음을 수행합니다.

  • 변경 피드 이벤트 전체 또는 시간 범위 내 읽기
  • 저장된 위치에서 이벤트 읽기 다시

주요 링크:

시작

현재 지원되는 환경

자세한 내용은 지원 정책을 참조하세요.

필수 구성 요소

패키지 설치

JavaScript용 Azure Storage Blob 변경 피드 클라이언트 라이브러리를 설치하는 기본 방법은 npm 패키지 관리자를 사용하는 것입니다. 터미널 창에 다음을 입력합니다.

npm install @azure/storage-blob-changefeed

클라이언트 인증

이 라이브러리는 인증된 BlobServiceClient 를 사용하여 초기화합니다. 를 인증하는 방법은 storage-blobBlobServiceClient참조하세요.

호환성

지금은 이 라이브러리가 Node.js 호환됩니다.

주요 개념

변경 피드는 표준 Blob 가격 책정 비용으로 스토리지 계정의 특수 컨테이너에 Blob으로 저장됩니다. 요구 사항에 따라 이러한 파일의 보존 기간을 제어할 수 있습니다. 변경 이벤트는 Apache Avro 형식 사양의 레코드로 변경 피드에 추가됩니다. 이 형식은 인라인 스키마를 사용하여 풍부한 데이터 구조를 제공하는 간단하고 빠른 이진 형식입니다. 이 형식은 Hadoop 에코시스템, Stream Analytics 및 Azure Data Factory에서 널리 사용됩니다.

이 라이브러리는 변경 이벤트를 가져오는 데 사용할 수 있는 클라이언트를 제공합니다.

예제

변경 피드 클라이언트 초기화

BlobChangeFeedClient 초기화하려면 과 거의 동일한 매개 변수가 BlobServiceClient 필요합니다. Blob 서비스 클라이언트를 만드는 방법은 storage-blob 을 참조하세요. 다음은 StorageSharedKeyCredential을 사용하는 예제입니다.

const { StorageSharedKeyCredential } = require("@azure/storage-blob");
const { BlobChangeFeedClient } = require("@azure/storage-blob-changefeed");

// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const changeFeedClient = new BlobChangeFeedClient(
  // When using AnonymousCredential, following url should include a valid SAS or support public access
  `https://${account}.blob.core.windows.net`,
  sharedKeyCredential
);

변경 피드의 모든 이벤트 읽기

를 사용하여 BlobChangeFeedClient.listChanges() 반복기가 변경 이벤트를 반복하도록 합니다.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const event of changeFeedClient.listChanges()) {
  changeFeedEvents.push(event);
}

페이지별.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const eventPage of changeFeedClient.listChanges().byPage()) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

continuationToken을 사용하여 읽기 이벤트 다시 시작하는 중

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
const firstPage = await changeFeedClient
  .listChanges()
  .byPage({ maxPageSize: 10 })
  .next();
for (const event of firstPage.value.events) {
  changeFeedEvents.push(event);
}

// Resume iterating from the previous position with the continuationToken.
for await (const eventPage of changeFeedClient
  .listChanges()
  .byPage({ continuationToken: firstPage.value.continuationToken })) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

시간 범위 내에서 이벤트 읽기

시작 시간과 종료 시간을 전달하여 BlobChangeFeedClient.listChanges() 시간 범위 내에서 이벤트를 가져옵니다.

지금은 변경 피드 클라이언트가 시작 시간을 가장 가까운 시간으로 반올림하고 종료 시간을 다음 시간으로 반올림합니다.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

const start = new Date(Date.UTC(2020, 1, 21, 22, 30, 0)); // will be rounded down to 22:00
const end = new Date(Date.UTC(2020, 4, 8, 21, 10, 0)); // will be rounded up to 22:00

let changeFeedEvents = [];
// You can also provide just a start or end time.
for await (const event of changeFeedClient.listChanges({ start, end })) {
  changeFeedEvents.push(event);
}

문제 해결

로깅을 사용하도록 설정하면 실패에 대한 유용한 정보를 파악하는 데 도움이 될 수 있습니다. HTTP 요청 및 응답 로그를 보려면 AZURE_LOG_LEVEL 환경 변수를 info로 설정합니다. 또는 @azure/logger에서 setLogLevel을 호출하여 런타임에 로깅을 사용하도록 설정할 수 있습니다.

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

다음 단계

추가 코드 샘플:

참여

이 라이브러리에 기여하려면 기여 가이드 를 참조하여 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.

또한 스토리지 라이브러리에 대한 테스트 환경 설정에 대한 자세한 내용은 스토리지 관련 가이드 를 참조하세요.

Impressions