연습 - Azure Storage 계정에 애플리케이션 연결

완료됨

Azure Storage 클라이언트 라이브러리는 Azure 스토리지 계정과 상호 작용하는 데 사용하는 개체 모델을 제공합니다. 이 개체 모델을 통해 Azure Storage 계정에 빠르게 연결하고 Azure Storage 서비스 API를 사용합니다.

Azure Storage 클라이언트 라이브러리 개체 모델

Azure의 스토리지 계정은 계정에 실제 Blob 개체(파일)를 저장하는 하나 이상의 ‘컨테이너’로 구성됩니다. 이러한 컨테이너는 파일 시스템의 폴더와 유사합니다. .NET용 Azure Storage Blob 클라이언트 라이브러리를 사용하여 스토리지 계정에 사진을 저장하는 컨테이너를 만들 수 있습니다.

프로그램에서 .NET용 Azure Storage Blob 클라이언트 라이브러리를 사용하려면 프로그램 맨 위에 Azure.Storage.Blobs 네임스페이스에 대한 using 문을 추가해야 합니다.

  1. Program.cs에 다음 명령을 추가합니다.

    using Azure.Storage.Blobs;
    

    .NET 애플리케이션에서 스토리지 계정의 컨테이너를 만들고 관리하려면 BlobContainerClient 개체를 사용합니다. BlobContainerClient 개체를 인스턴스화하려면 스토리지 계정 및 컨테이너 이름에 연결 문자열을 제공해야 합니다. 컨테이너 이름은 3자에서 63자 사이여야 하고 소문자와 대시(-) 문자만 포함할 수 있습니다. 이 애플리케이션의 경우 간단히 사진이라는 이름을 사용합니다.

  2. 애플리케이션의 Main 섹션에 다음 코드를 추가하여 Azure Storage 연결 문자열을 가져오고 BlobContainerClient 개체를 만듭니다.

    var connectionString = configuration.GetConnectionString("StorageAccount");
    string containerName = "photos";
    
    BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
    

    참고

    이때 클라이언트 라이브러리는 Azure에 연결하거나 사용 중인 연결 문자열 및 액세스 키의 유효성을 검사하려고 시도하지 않습니다. 단순히 Azure Blob Storage에 대해 작업을 수행하는 데 사용되는 간단한 클라이언트 개체를 생성했습니다. 스토리지 계정에 대해 작업을 호출한 경우에만 네트워크 호출이 수행됩니다.

  3. 바로 이전 줄 아래에서 이미지를 저장하는 사진 컨테이너를 만드는 코드를 추가할 수 있습니다.

    container.CreateIfNotExists();
    
  4. 파일을 저장합니다.

  5. 이제 애플리케이션을 실행하여 스토리지 계정에 컨테이너를 만듭니다. CreateIfNotExists 메서드를 사용했기 때문에 프로그램을 여러 번 실행할 수 있지만 컨테이너는 첫 번째 실행에서만 생성됩니다.

    dotnet run
    
  6. 다음 Azure CLI 명령을 실행하면 컨테이너를 만들었는지 여부를 확인할 수 있습니다. <name>을 스토리지 계정의 이름으로 바꿔야 합니다.

    az storage container list \
    --account-name <name>
    

JavaScript용 Azure Storage Blob 클라이언트 라이브러리에는 Azure Storage Blob과 상호 작용하기 위한 여러 클라이언트 개체가 포함되어 있습니다. 이 계층 구조의 맨 위에는 BlobServiceClient 개체가 있습니다. JavaScript 코드에서 이 개체를 사용하려면 다음을 수행합니다.

  1. 코드 편집기에서 index.js 파일을 열고 require('dotenv').config(); 문 바로 뒤에 다음 문을 추가합니다.

    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. 이제 스토리지 계정 연결 문자열을 가져와 BlobServiceClient 개체의 fromConnectionString 팩터리 메서드에 전달하여 코드에 BlobServiceClient 개체를 만들어야 합니다. 다음 코드 줄을 추가합니다.

    const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
    const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
    

    참고 항목

    클라이언트 라이브러리는 라이브러리가 필요한 작업이 호출되기 전에는 Azure 연결을 시도하지 않습니다. 클라이언트 개체는 Azure Blob Storage에 액세스할 수 있는 간단한 개체입니다. 이는 사용 중인 연결 또는 액세스 키의 유효성을 검사하지 않습니다.

  3. 정의된 클라이언트 개체가 프로그램에 있으면 해당 클라이언트 개체의 메서드를 사용하여 실제 작업을 수행할 수 있습니다. 네트워크 호출을 생성하는 메서드는 의도적으로 비동기식입니다. 라이브러리는 Promise를 사용하여 비동기 결과를 반환합니다. 이런 이유로 main 함수를 비동기로 표시해야 합니다. main 함수 개체를 다음 코드로 바꿉니다. 두 개의 슬래시로 시작하는 줄은 주석입니다.

    async function main() {
     // Function code here
    }
    
  4. 변경 내용을 index.js에 저장합니다.

    이제 몇 가지 코드를 추가하여 스토리지 계정에 대해 작업을 실행해 보겠습니다. 스토리지 계정은 스토리지 계정에서 폴더처럼 작동하는 하나 이상의 컨테이너로 구성됩니다. 스토리지 계정에서 만든 Blob 개체(파일)는 이러한 컨테이너 중 하나에 저장됩니다. 스토리지 계정에 사진을 저장하는 컨테이너를 만들어야 합니다.

    컨테이너 이름은 3자에서 63자 사이여야 하고 소문자와 대시(-) 문자만 포함할 수 있습니다. 이 애플리케이션의 경우 간단히 사진이라는 이름을 사용합니다.

    스토리지 계정에서 컨테이너를 만들려면 스토리지 계정의 컨테이너를 나타내는 ContainerClient 개체를 가져와야 합니다. 컨테이너가 스토리지 계정에 아직 존재하지 않더라도 ContainerClient을(를) 사용하여 컨테이너를 만들고 이를 관리할 수 있습니다.

  5. ContainerClient 개체를 가져오려면 BlobServiceClient 개체에서 getContainerClient 메서드를 호출하고 컨테이너의 이름을 매개 변수로 제공합니다. 그런 다음 Azure Storage 계정에서 컨테이너를 만들려면 containerClient 개체에서 createIfNotExists 메서드를 사용합니다. // Function Code here 주석 줄을 다음 문으로 바꿉니다.

    // Create a container (folder) if it does not exist
    const containerName = 'photos';
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const containerExists = await containerClient.exists()
    if ( !containerExists) {
        const createContainerResponse = await containerClient.createIfNotExists();
        console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    else {
        console.log(`Container ${containerName} already exists`);
    }
    
  6. 변경 내용을 index.js 파일에 저장합니다.

  7. Cloud Shell 명령줄에서 다음 명령을 입력하여 프로그램을 빌드하고 실행합니다. 그러면 스토리지 계정에 컨테이너가 만들어집니다.

    node index.js
    

    await 키워드 사용에 대한 오류가 발생할 경우에는 위의 지침에서 마지막 단계에 따라 main 함수 정의에 async 키워드를 추가했는지 확인하세요.

    프로그램을 처음 실행하면 컨테이너가 성공적으로 생성되었다는 메시지와 함께 true라는 상태가 표시됩니다. 두 번째 및 그 이후로 프로그램을 실행하면 컨테이너가 이미 존재하기 때문에 위와 유사한 메시지와 함께 false라는 상태가 표시됩니다.

  8. 다음 Azure CLI 명령을 실행하면 컨테이너를 만들었는지 여부를 확인할 수 있습니다. <name>을 스토리지 계정의 이름으로 바꿔야 합니다.

    az storage container list \
    --account-name <name>
    

이제 프로그램이 Azure 스토리지 계정에 연결되고 photos 컨테이너가 만들어졌으므로 프로그램에서 컨테이너에 이미지를 업로드합니다.