어떤 순간에는 파일을 저장하기 위해 저렴하면서도 효율적인 솔루션이 필요할 수 있습니다. 그런데 어디에서 그런 솔루션을 찾을까요? Microsoft Azure의 이진 대형 객체(blob) 저장소를 살펴보세요! Blob 저장소는 Azure 저장소 서비스 중 하나로, 대량의 텍스트 및 이진 데이터 파일, 스트리밍 콘텐츠, 심지어는 배포용 정적 콘텐츠도 저장할 수 있습니다.
이 튜토리얼에서는 일반적인 예를 통해 Azure에서 blob 저장소를 사용하는 방법을 알아보겠습니다.
계속해서 진행해보세요!
사전 준비 사항
이 튜토리얼은 실습을 포함한 데모로 진행됩니다. 따라하려면 다음을 설치하고 사용할 수 있어야 합니다.
- PowerShell 7이 설치되어 있어야 합니다.
- Az PowerShell 모듈이 PowerShell 7 환경에 설치되어 있어야 합니다.
- AzCopy 실행 파일을 다운로드하고 접근 가능해야 합니다.
- Azure 구독 – Azure 리소스를 사용하는 다양한 방법이 있으며, 거의 비용이 들지 않을 수 있습니다.
Azure 환경 구축
파일을 저장하기 위해 블롭 스토리지를 사용하기 전에 PowerShell Core 모듈을 가져오고 Azure 구독과 연결한 다음 Azure 환경을 구축해야합니다.
1. PowerShell 7을 시작하고 다음 명령을 실행하여 블롭 스토리지에 파일을 저장하는 데 사용할 모듈을 가져옵니다.

2. 다음으로, Azure Active Directory (AD) 테넌트에 로그인한 다음 아래 명령을 실행하여 웹 브라우저에서 대화 형 인증을 완료하십시오.

로그인 후에 표시된 테넌트와 구독이 의도한 것인지 항상 확인하십시오. 필요한 경우 컨텍스트를 변경할 수 있습니다.
3. 이제 아래 명령을 실행하여 데모
라는 새로운 리소스 그룹을 만들고 다섯 자리의 임의의 숫자(Get-Random -Maximum 99999
)가 추가됩니다. 리소스 그룹은 계층적으로 구독 아래에 있으며 더 세분화된 관리를 가능하게 하는 리소스를 포함합니다.
리소스 그룹의 위치
가 이 예제에서 중부 미국
으로 설정되어 있는 것에 유의하십시오. 명령이 완료되면 결과가 $resourceGroup
변수에 저장됩니다.

4. 다음 명령을 실행하여 다음 작업을 수행하고 새로운 Azure 저장소 계정을 만듭니다. 이 예에서는 저장소 계정의 이름을 “storage”로 지정하고 다섯 자리 랜덤 숫자가 추가됩니다 (Get-Random -Maximum 99999
). 명령이 완료되면 $storageAccount
변수에 반환된 개체가 저장됩니다.

5. 아래 명령을 실행하여 Azure AD 역할 할당을 위한 여러 작업을 실행합니다:
-SignInName
값은 현재 로그인한 계정을 사용합니다. 이 계정은Get-AzAccessToken
cmdlet이 반환한UserID
속성을 통해 확인됩니다.-RoleDefinitionName
값은 할당하는 빌트인 역할인 Storage Blob Data Contributor입니다.-Scope
값은 생성한 저장소 계정 (아래에 표시된 storage10029)의 역할 할당 범위를 설정합니다. 이는$storageAccount
변수의Id
속성을 통해 이루어집니다.
필요한 경우 개별 컨테이너에 대해 더 세분화된 역할 할당을 항상 제공할 수 있습니다.

6. 마지막으로, 로컬 시스템에 temp.dat라는 파일을 생성하기 위해 아래의 명령어 시리즈를 실행하십시오. 이 파일은 뒤의 섹션에서 Blob 저장소가 작동하는 방법을 보여주기 위해 저장소 계정으로 업로드 및 다운로드됩니다.

파워쉘을 통한 파일 업로드
이제 Azure 환경을 구축하고 샘플 파일을 만들었으니 파일을 Blob Storage에 업로드해 보겠습니다. Blob Storage는 일반 파일 시스템과는 다르게 작동합니다. Blob Storage의 각 파일은 객체로 취급되며 컨테이너 내에 보관됩니다.
Blob의 핵심 기능은 다른 파일 시스템과 유사하지만, 어느 쪽이 더 나은 해결책이 될 수 있는 사용 사례도 있습니다. Blob은 심지어 가상 파일 시스템(예: BlobFuse)를 지원할 수도 있습니다.
Microsoft는 PowerShell, AzCopy 및 Azure Portal을 통해 파일을 스토리지 계정에 업로드할 수 있는 여러 가지 방법을 제공합니다. 그러나 먼저 PowerShell을 사용하여 샘플 파일(temp.dat)을 Blob Storage에 업로드해 보겠습니다. PowerShell은 Azure Storage 계정과 작업하는 일관된 경험을 제공합니다.
이 데모를 수행하기 위해 필요한 작업은 비용이 발생할 수 있습니다. 사용량을 모니터링하고 더 이상 사용하지 않을 리소스는 삭제하십시오.
아래 명령을 실행하여 새 컨테이너를 생성하고 temp.dat 파일($file
)을 객체로 업로드합니다. 이 예제에서는 컨테이너의 이름을 demo로 지정했지만, 원하는 대로 다른 이름을 지정할 수 있습니다.

AzCopy를 통한 파일 업로드
아마도 동기화 내용이나 다양한 계정 간의 콘텐츠 복사와 같은 더 복잡한 사용 사례가 있을 수 있습니다. 그렇다면 AzCopy 명령줄 도구가 필요합니다.
아래 명령을 실행하여 로컬 파일 ($file
)을 컨테이너의 URL 엔드포인트로 복사하기 위해 Azure 테넌트에 로그인합니다. PowerShell과 함께 사용하는 자격 증명을 AzCopy가 인식하지 못하기 때문에 Azure 테넌트에 로그인합니다.

업로드하는 대신 AzCopy를 통해 파일을 다운로드하려면 아래 명령을 실행하여 지정된 파일(
temp.dat
)을 컨테이너에서 현재 로컬 디렉터리로copy
합니다:& .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat
Azure Portal을 통한 파일 업로드
파일을 업로드하는 GUI 방법을 선호하는 경우 Azure Storage Explorer를 사용하세요. Azure Storage Explorer는 블롭 스토리지를 관리하기 위한 최고의 그래픽 방법 중 하나입니다. Azure Portal의 저장소 계정 리소스에서 저장소 탐색기에 액세스할 수 있습니다.
1. 좋아하는 웹 브라우저를 열고 Azure Portal의 저장소 탐색기로 이동합니다.
2. 아래에 표시된대로 BLOB CONTAINERS 아래의 데모 컨테이너를 클릭한 다음 업로드를 클릭하여 블롭 업로드 블레이드(오른쪽 패널)에 액세스합니다.
3. 이제 블롭 업로드 패널에서 폴더 아이콘을 클릭하여 업로드할 파일(temp.dat)을 선택합니다.
4. 마지막으로, 파일을 업로드하려면 업로드 (파란 버튼)을 클릭하십시오.

업로드가 완료되면 블롭 업로드 블레이드를 닫고 아래 이미지와 같이 업로드한 블롭을 볼 수 있습니다.

Azure Portal을 통한 파일 다운로드
블롭 스토리지에 콘텐츠를 업로드하는 것과 유사하게, Azure는 다양한 방법으로 콘텐츠를 다운로드하는 것을 지원합니다. 그러나 방금 Azure Portal을 통해 파일 (temp.dat)을 업로드했으므로 Azure Storage Explorer를 사용하여 동일한 파일을 다운로드해 보겠습니다.
다음에 표시된 대로 Azure Storage Explorer에서 파일 (temp.dat)을 선택하고 다운로드 버튼을 클릭하십시오. 이렇게 하면 확인 다이얼로그 상자가 열리며 다음 단계에서 볼 수 있습니다.

이제 선택한 파일을 다운로드하려면 여기를 클릭하여 다운로드를 시작하십시오 버튼을 클릭하십시오.

PowerShell을 통한 파일 다운로드
파일을 업로드하는 것과 마찬가지로 PowerShell에서 명령을 실행하여 블롭 스토리지에서 파일을 다운로드할 수도 있습니다. PowerShell을 사용하면 컨테이너 내의 개체를 나열한 다음 다운로드할 수 있습니다.
아래 명령을 실행하여 컨테이너 내의 모든 개체를 나열하고 temp.dat 파일을 로컬 디렉터리로 다운로드하십시오.

만약 파일을 다운로드하기 위해 일회성의 고유한 링크를 사용하는 것을 선호한다면, 공유 액세스 서명(SAS) 토큰을 사용하여 사전 인증된 다운로드 링크를 만들 수 있습니다. 이러한 토큰은 고유하고 개인적인 인증 토큰으로, 액세스를 확인하는 데 사용할 수 있습니다.
아래 명령을 실행하여 다운로드할 파일(temp.dat
)에 대한 새로운 다운로드 링크를 만듭니다. 생성된 다운로드 링크는 10초 후에 만료되며, 해당 링크를 사용하여 내용을 $temp
변수로 다운로드합니다(Invoke-WebRequest $uri
).

블롭 저장소에서 공개 인터넷에 웹 페이지 호스팅하기
지금까지 인증된 사용자에 의한 파일 다운로드 사례를 살펴보았습니다. 그러나 블롭 저장소는 공개 콘텐츠에 대한 훌륭한 옵션을 제공할 수 있다는 것을 알고 계셨습니까? 한 가지 예는 블롭을 사용하여 웹 페이지 콘텐츠를 호스팅하는 것입니다. 이를 이 데모에서 수행하게 됩니다.
웹 페이지 콘텐츠가 이동 중 및 안정 상태에서도 암호화되어 있더라도, 공개 액세스가 설정된 경우 누구나 해당 콘텐츠에 액세스할 수 있습니다.
이제 다른 사용 사례를 설정하고 있으므로 공용 클라우드의 주요 이점 중 하나인 규모와 탄력성을 활용할 것입니다. 특정 사용 사례를 위해 새로운 저장소 계정을 프로비저닝하고 공용 컨테이너를 사용하는 위험을 제한할 수 있습니다.
1. “Azure 환경 구축” 섹션의 네 번째 단계에서 수행한 것과 같이 아래 명령을 실행하여 새로운 저장소 계정을 생성하십시오. 그러나 이번에는 반환된 개체를 $publicStorageAccount
변수로 전달하게 됩니다.

이제 공용 콘텐츠용 전용 저장소 계정이 있으며 다음 명령을 사용하여 정적 웹 콘텐츠를 호스팅하도록 구성할 수 있습니다.
2. 다음으로 Enable-AzStorageStaticWebsite
cmdlet을 실행하여 저장소 계정($publicStorageAccount
)을 새 사용 사례에 맞게 구성하십시오. -IndexDocument
는 사용자에게 표시할 기본 웹 페이지를 설정합니다. -Context
는 방금 생성한 새 저장소 계정입니다.

3. 현재 디렉토리에 새 HTML 문서를 만들고 해당 문서를 웹 콘텐츠를 호스팅하기 위해 특별히 지정된 컨테이너에 업로드하려면 아래 명령을 실행하십시오. 콘텐츠 유형은 HTML(ContentType="text/html"
)로 설정되어 있으므로 웹 브라우저가 문서를 올바르게 해석할 수 있습니다.
웹 브라우저에서 문서에 액세스하면 Hello from <storage account name> 메시지가 표시됩니다.

4. 이제 사용자가 콘텐츠에 액세스할 수 있는 URL을 얻으려면 다음 명령을 실행하십시오.

5. 마지막으로 브라우저에서 URL을 열면 다음 스크린샷과 유사한 내용이 표시됩니다.

리소스 정리
이제 blob 저장소를 사용하여 이러한 새로운 개념을 테스트한 후 리소스를 정리하고 싶을 것입니다. 왜냐하면 이렇게 하면 구독을 청소할 수 있습니다. 더 중요한 것은 추가 요금 발생을 중단할 수 있습니다.
이 자습서에서 사용한 모든 리소스는 단일 리소스 그룹에 있으므로 리소스 그룹을 삭제하여 모든 리소스를 정리할 수 있습니다.
리소스는 항상 단일 리소스 그룹 내에 포함되지 않을 수 있으며, 자주 테스트하거나 반복할 때 논리적 분할의 적극적 사용이 유익함을 보여줍니다.
$resourceGroup
변수의 ResourceGroupName
속성을 지정하여 리소스 그룹과 그 내의 모든 리소스를 삭제하려면 아래의 Remove-AzResourceGroup
cmdlet을 실행하십시오.

결론
이 자습서에서는 클라우드 저장소의 블롭에 파일을 업로드하고 다운로드하는 방법을 다양한 플랫폼에서 살펴보았습니다. 또한 블롭 저장소에서 웹 페이지를 호스팅하여 사용자가 공개적으로 액세스할 수 있다는 것을 배웠습니다.
당신은 Blob 저장소 및 다른 저장 유형을(를) 사용하여 훨씬 더 많은 작업을 수행할 수 있습니다. 그렇다면 이러한 개념을 어떻게 확장할 수 있을까요? 파일 저장소 계정과 함께 작업하거나, 서버리스 파일 시스템을 제공하거나, Azure 가상 머신의 가상 하드 디스크로 페이지 Blob을 사용하는 등의 방법이 있을 수 있습니다.