빠른 시작: Ruby용 Azure Blob Storage 클라이언트 라이브러리

Ruby를 사용하여 Microsoft Azure Blob Storage의 컨테이너에서 Blob을 만들고, 다운로드하고, 나열하는 방법에 대해 알아봅니다.

사전 요구 사항

Azure Storage에 액세스하려면 Azure 구독이 있어야 합니다. 아직 구독하지 않은 경우 시작하기 전에 체험 계정을 만드세요.

Azure Storage에 대한 모든 액세스는 스토리지 계정을 통해 수행됩니다. 이 빠른 시작에서는 Azure Portal, Azure PowerShell 또는 Azure CLI를 사용하여 스토리지 계정을 만듭니다. 스토리지 계정을 만드는 데 도움이 필요한 경우 스토리지 계정 만들기를 참조하세요.

다음 추가 필수 구성 요소를 설치했는지 확인합니다.

샘플 애플리케이션 다운로드

이 빠른 시작 가이드에서 사용되는 샘플 애플리케이션은 기본 Ruby 애플리케이션입니다.

Git을 사용하여 애플리케이션 복사본을 개발 환경에 다운로드합니다. 이 명령은 리포지토리를 로컬 컴퓨터에 복제합니다.

git clone https://github.com/Azure-Samples/storage-blobs-ruby-quickstart.git

storage-blobs-ruby-quickstart 폴더로 이동하여 코드 편집기에서 example.rb 파일을 엽니다.

Azure Portal에서 자격 증명 복사

애플리케이션 예제는 스토리지 계정 액세스에 대한 권한을 부여해야 합니다. 스토리지 계정 자격 증명을 연결 문자열 형식으로 애플리케이션에 제공합니다. 스토리지 계정 자격 증명을 보려면:

  1. Azure Portal에서 스토리지 계정으로 이동합니다.

  2. 스토리지 계정 개요의 설정 섹션에서 액세스 키를 선택하여 계정 액세스 키 및 연결 문자열을 표시합니다.

  3. 스토리지 계정의 이름을 적어둡니다. 권한 부여에 필요합니다.

  4. key1 아래에서 값을 찾고, 복사를 선택하여 계정 키를 복사합니다.

    Azure Portal에서 계정 키를 복사하는 방법을 보여주는 스크린샷

스토리지 연결 문자열 구성

애플리케이션에 대한 BlobService 인스턴스를 만들려면 스토리지 계정 이름과 계정 키를 제공합니다.

example.rb 파일의 다음 코드는 새 BlobService 개체를 인스턴스화합니다. accountnameaccountkey 값을 해당하는 계정 이름과 키로 바꿉니다.

# Create a BlobService object
account_name = "accountname"
account_key = "accountkey"

blob_client = Azure::Storage::Blob::BlobService.create(
    storage_account_name: account_name,
    storage_access_key: account_key
)

샘플 실행

이 샘플은 컨테이너를 Blob Storage에 만들고, 새 Blob을 컨테이너에 만들고, 컨테이너의 Blob을 나열하고, Blob을 로컬 파일에 다운로드합니다.

예제를 실행합니다. 애플리케이션을 실행한 결과에 대한 출력 예는 다음과 같습니다.

C:\azure-samples\storage-blobs-ruby-quickstart> ruby example.rb

Creating a container: quickstartblobs18cd9ec0-f4ac-4688-a979-75c31a70503e

Creating blob: QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

List blobs in the container following continuation token
        Blob name: QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

Downloading blob to C:/Users/azureuser/Documents/QuickStart_6f8f29a8-879a-41fb-9db2-0b8595180728.txt

Paused, press the Enter key to delete resources created by the sample and exit the application

Enter 키를 눌러 계속하면 샘플 프로그램에서 스토리지 컨테이너와 로컬 파일을 삭제합니다. 계속하기 전에 다운로드한 파일의 Documents 폴더를 확인합니다.

또한 Azure Storage Explorer를 사용하여 스토리지 계정의 파일을 확인할 수 있습니다. Azure Storage Explorer는 스토리지 계정 정보에 액세스할 수 있는 무료 플랫폼 간 도구입니다.

파일이 확인되면 Enter 키를 눌러 테스트 파일을 삭제하고 데모를 종료합니다. example.rb 파일을 열어 코드를 확인합니다.

샘플 코드 이해

다음으로, 작동 방식을 이해할 수 있도록 샘플 코드를 살펴봅니다.

스토리지 개체에 대한 참조 가져오기

가장 먼저 수행할 작업은 Blob Storage에 액세스하고 관리하는 데 사용되는 개체의 인스턴스를 만드는 것입니다. 이러한 개체는 서로를 기반으로 합니다. 각각은 목록의 그 다음 개체에서 사용됩니다.

  • Azure Storage BlobService 개체의 인스턴스를 만들어 연결 자격 증명을 설정합니다.
  • 액세스하는 컨테이너를 나타내는 Container 개체를 만듭니다. 컨테이너는 컴퓨터에서 폴더를 사용하여 파일을 구성하는 것과 같이 blob을 구성하는 데 사용됩니다.

컨테이너 개체가 있으면 관심 있는 특정 Blob을 가리키는 Block Blob 개체를 만들 수 있습니다. Block 개체를 사용하여 Blob을 만들고, 다운로드하고, 복사합니다.

중요

컨테이너 이름은 소문자여야 합니다. 컨테이너 및 BLOB 이름에 대한 자세한 내용은 컨테이너, BLOB, 메타데이터 이름 지정 및 참조를 참조하세요.

다음 예제 코드에서 수행하는 작업은 다음과 같습니다.

  • 새 컨테이너를 만듭니다.
  • Blob이 공개되도록 컨테이너에 대한 권한을 설정합니다. 컨테이너는 고유 ID가 추가된 quickstartblobs라고 합니다.
# Create a container
container_name = "quickstartblobs" + SecureRandom.uuid
puts "\nCreating a container: " + container_name
container = blob_client.create_container(container_name)

# Set the permission so the blobs are public
blob_client.set_container_acl(container_name, "container")

컨테이너에서 Blob 만들기

Blob Storage는 블록 Blob, 추가 Blob 및 페이지 Blob을 지원합니다. Blob을 만들려면 Blob에 대한 데이터를 전달하는 create_block_blob 메서드를 호출합니다.

다음 예제에서는 이전에 만든 컨테이너에서 고유 ID와 .txt 파일 확장명을 사용하여 QuickStart_ 라는 Blob을 만듭니다.

# Create a new block blob containing 'Hello, World!'
blob_name = "QuickStart_" + SecureRandom.uuid + ".txt"
blob_data = "Hello, World!"
puts "\nCreating blob: " + blob_name
blob_client.create_block_blob(container.name, blob_name, blob_data)

블록 Blob은 최대 4.7TB일 수 있으며, 스프레드시트에서 큰 비디오 파일에 이르기까지 다양할 수 있습니다. 페이지 Blob은 주로 IaaS 가상 머신을 지원하는 VHD 파일에 사용됩니다. 추가 Blob은 일반적으로 파일에 쓴 다음, 더 많은 정보를 계속 추가하려는 경우와 같이 로깅에 사용됩니다.

컨테이너의 Blob 나열

list_blobs 메서드를 사용하여 컨테이너의 파일 목록을 가져옵니다. 다음 코드는 Blob 목록을 검색한 다음, 해당 이름을 표시합니다.

# List the blobs in the container
puts "\nList blobs in the container following continuation token"
nextMarker = nil
loop do
    blobs = blob_client.list_blobs(container_name, { marker: nextMarker })
    blobs.each do |blob|
        puts "\tBlob name: #{blob.name}"
    end
    nextMarker = blobs.continuation_token
    break unless nextMarker && !nextMarker.empty?
end

Blob 다운로드

get_blob 메서드를 사용하여 Blob을 로컬 디스크에 다운로드합니다. 다음 코드는 이전 섹션에서 만든 Blob을 다운로드합니다.

# Download the blob

# Set the path to the local folder for downloading
if(is_windows)
    local_path = File.expand_path("~/Documents")
else 
    local_path = File.expand_path("~/")
end

# Create the full path to the downloaded file
full_path_to_file = File.join(local_path, blob_name)

puts "\nDownloading blob to " + full_path_to_file
blob, content = blob_client.get_blob(container_name, blob_name)
File.open(full_path_to_file,"wb") {|f| f.write(content)}

리소스 정리

Blob이 더 이상 필요하지 않은 경우 delete_blob을 사용하여 제거합니다. delete_container 메서드를 사용하여 전체 컨테이너를 삭제합니다. 컨테이너를 삭제하면 컨테이너에 저장된 Blob도 모두 삭제됩니다.

# Clean up resources, including the container and the downloaded file
blob_client.delete_container(container_name)
File.delete(full_path_to_file)

BLOB을 사용하여 Ruby 애플리케이션을 개발하기 위한 리소스

Ruby 개발을 위한 다음 추가 리소스를 참조하세요.

다음 단계

이 빠른 시작에서는 Ruby를 사용하여 Azure Blob Storage와 로컬 디스크 간에 파일을 전송하는 방법을 알아보았습니다. Blob Storage를 사용하는 방법에 대해 자세히 알아보려면 Storage 계정 개요로 계속 진행하세요.

Storage Explorer 및 Blob에 대한 자세한 내용은 Storage Explorer를 사용하여 Azure Blob Storage 리소스 관리를 참조하세요.