Azure Storage API와 상호 작용

완료됨

Azure Storage는 각 계정에 저장된 컨테이너 및 데이터를 사용하는 REST API를 제공합니다. 저장할 수 있는 각 데이터 형식은 고유한 독립적인 API가 있습니다. 다음과 같은 네 가지 데이터 형식이 있습니다.

  • Blob은 이진 및 텍스트 파일처럼 구조화되지 않은 데이터를 나타냅니다.
  • 는 영구 메시징을 나타냅니다.
  • 테이블은 구조화된 키/값 스토리지를 나타냅니다.
  • 파일은 전통적인 SMB 파일 공유를 나타냅니다.

REST API 사용

Storage REST API는 HTTP/HTTPS 요청을 보내고 HTTP/HTTPS 응답을 받을 수 있는 모든 앱을 통해 어디에서나 인터넷으로 액세스할 수 있습니다.

예를 들어 컨테이너의 모든 Blob을 나열하려는 경우 다음과 같은 요청을 만듭니다.

GET https://[url-for-service-account]/?comp=list&include=metadata

이 요청은 계정과 관련된 데이터가 포함된 XML 블록을 반환합니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://[url-for-service-account]/">  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://[url-for-service-account]/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 18:09:03 GMT</Last-Modified>  
        <Etag>0x8CAE7D0C4AF4487</Etag>  
      </Properties>  
      <Metadata>  
        <Color>orange</Color>  
        <ContainerNumber>01</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container2</Name>  
      <Url>https://[url-for-service-account]/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8C24928</Etag>  
      </Properties>  
      <Metadata>  
        <Color>pink</Color>  
        <ContainerNumber>02</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container3</Name>  
      <Url>https://[url-for-service-account]/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8EAC0BB</Etag>  
      </Properties>  
      <Metadata>  
        <Color>brown</Color>  
        <ContainerNumber>03</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>container4</NextMarker>  
</EnumerationResults>  

하지만 이 방법은 각 API에서 작동하기 위해 수동 구문 분석과 HTTP 패킷 생성이 필요합니다. 이러한 이유로 Azure는 공용 언어 및 프레임워크에 서비스를 간편하게 사용할 수 있도록 미리 빌드된 클라이언트 라이브러리를 제공합니다.

클라이언트 라이브러리 사용

클라이언트 라이브러리를 사용하면 앱 개발자가 해야 하는 작업을 대폭 줄일 수 있습니다. API가 테스트되었으며 대개 REST API가 주고받는 데이터 모델과 관련하여 더 좋은 래퍼를 제공하기 때문입니다.

Microsoft는 다음과 같은 다양한 언어와 프레임워크를 지원하는 Azure 클라이언트 라이브러리를 제공합니다.

  • .NET
  • Java
  • Python
  • Node.js
  • 이동


Logos of supported frameworks you can use with Azure.

예를 들어 동일한 BLOB 목록을 C#에서 검색하려면 다음 코드 조각을 사용합니다.

string containerName = "...";
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

var blobs = container.GetBlobs();
foreach (var blob in blobs)
{
    Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:YYYY-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
}

또는 JavaScript에서는 다음을 사용합니다.

const containerName = '...';
const containerClient = blobServiceClient.getContainerClient(containerName);

let blobs = containerClient.listBlobsFlat();
for await (const blob of blobs) {
  console.log(`${blob.name} --> Created: ${blob.properties.createdOn}   Size: ${blob.properties.contentLength}`);
}

참고

클라이언트 라이브러리는 REST API를 감싸는 씬 ‘래퍼’일 뿐입니다. 클라이언트 라이브러리는 웹 서비스를 직접 사용한 경우 작업을 정확하게 수행합니다. 이러한 라이브러리는 오픈 소스로서 라이브러리를 매우 투명하게 합니다. GitHub의 이러한 라이브러리 소스 코드에 대한 링크는 이 모듈 마지막에 있는 추가 리소스 섹션을 참조하세요.

다음으로, 앱에 클라이언트 라이브러리 지원을 추가해 보겠습니다.