푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 데이터베이스 통합

C#의 Azure 저장소 소개

Tim Corey
1시간 05분 37초

Azure Storage는 Microsoft Azure에서 제공하는 핵심 서비스이며, .NET 기술과 결합하면 클라우드에 파일을 저장하고 검색하는 강력한 도구가 됩니다. Tim Corey는 심층 튜토리얼 " C#을 이용한 Azure Storage 소개 "에서 Azure Storage 계정 구성, Azure Blob Storage 설정, 그리고 이를 C# ASP.NET Core MVC 프로젝트에 통합하는 정확한 단계를 시청자에게 안내합니다.

이 글에서는 Tim의 영상을 자세히 살펴보면서 실제 Azure 개발에서 사용되는 주요 개념과 용어를 논의하며 프로세스의 모든 단계를 살펴보겠습니다.

Azure 스토리지 가격 및 계획

Tim은 C# 애플리케이션에서 Azure Storage를 사용하는 것의 재정적 효율성에 대해 설명하는 것으로 시작합니다. 텍스트 파일, 이미지 또는 바이너리 데이터를 저장하는 데 블롭 컨테이너를 사용하든 비용은 최소한으로 유지됩니다. 그는 성능 계층, 이중화 설정 및 데이터 작업과 같은 선택한 기능을 기반으로 요금을 예측하는 Azure 가격 계산기를 소개합니다.

Tim은 Azure 포털에서 범용 v2 블록 Blob 스토리지를 선택하고 자주 액세스하는 파일에 대해 핫 액세스 계층을 구성합니다. 그는 스토리지 계정이 로컬 이중화 스토리지(LRS)를 사용하여 비용을 최소화하면서도 안전성을 유지하도록 합니다.

"데이터 1GB를 저장하고 수천 건의 작업을 수행하는 데모 앱의 경우 비용은 월 13센트로 떨어집니다."라고 팀은 설명합니다.

Azure 스토리지 계정 생성

Tim은 Azure 포털에서 새 리소스 그룹과 해당 Azure 스토리지 계정을 만드는 방법을 보여줍니다. 명명 규칙은 엄격합니다. 스토리지 계정 이름은 고유해야 하고, 소문자여야 하며, 하이픈(-)을 포함해서는 안 됩니다.

설정 과정에서 그는 비용 절감을 위해 지리적 중복 스토리지를 비활성화하는데, 이는 프로토타입이나 로컬 환경에서 작업하는 개발자에게 매우 중요한 팁입니다. 그는 컨테이너 수준에서 익명 액세스를 허용하지만, 이는 시연 목적으로만 제공되며 실제 운영 환경에서는 보안 액세스가 필요하다고 경고합니다.

Intro Azure Storage Csharp 1 related to Azure 스토리지 계정 생성

Tim은 또한 액세스 키, 연결 문자열 및 스토리지 계정 이름에 대해서도 다룹니다. 이 모든 것은 C# 프로젝트가 Azure 리소스에 연결할 때 필수적입니다.

Azure Blob Storage 이해하기

Tim은 Azure 스토리지 계정에서 데이터를 구성하는 데 Blob 컨테이너가 어떻게 사용되는지 설명합니다. 그는 포털을 통해 수동으로 새 컨테이너를 생성하는 것을 피하고 대신 Azure SDK for .NET 사용하여 코드로 컨테이너를 생성할 계획입니다.

그는 계정의 보안 설정에서 확인할 수 있는 보안 액세스 키와 연결 문자열이 애플리케이션에서 스토리지 클라이언트 라이브러리와 인증하는 데 사용될 것이라고 설명합니다.

ASP.NET Core 프로젝트 시작하기

Tim은 Visual Studio를 사용하여 .NET 9 MVC 웹 애플리케이션을 만듭니다. Razor Pages나 Blazor Server와 같은 어떤 UI 유형이든 사용할 수 있지만, 그는 시연을 위해 MVC를 선택했습니다.

오후 7시 35분, 그는 secrets.json 파일에 민감한 자격 증명을 안전하게 저장합니다.

  • 연결 문자열

  • 스토리지 계정 키

  • 컨테이너 이름

  • 스토리지 계정 이름

Intro Azure Storage Csharp 2 related to ASP.NET Core 프로젝트 시작하기

팀은 appsettings.json 파일이 소스 코드 저장소에 커밋되기 때문에 비밀 정보를 포함해서는 안 된다고 설명합니다. 대신, 특히 개발 단계에서는 사용자 비밀 키를 사용하여 비밀 정보를 로컬에 저장해야 합니다.

필수 NuGet Install-Package

Tim은 Azure Blob Storage와 상호 작용하기 위해 Azure.Storage.Blobs NuGet 패키지를 설치합니다. 그는 마이크로소프트가 Azure SDK를 사용하여 기능을 모듈화함으로써 더 작고 유지 관리가 쉬운 애플리케이션을 만들 수 있도록 한 점을 높이 평가합니다.

Intro Azure Storage Csharp 3 related to 필수 NuGet Install-Package

"이제는 모든 것을 프레임워크에 포함시키는 대신, Azure Blob 클라이언트 라이브러리와 같이 필요한 것만 NuGet 통해 얻을 수 있습니다."라고 Tim은 지적합니다.

Azure Storage에 대한 옵션 패턴 구성

다음으로 Tim은 자신의 설정에 있는 키와 일치하는 POCO 클래스(BlobStorageOptions)를 생성합니다. 그는 옵션 패턴을 사용하여 구성을 강력한 형식의 객체에 바인딩함으로써 중앙 집중식으로 관리하고 테스트 가능한 구성을 구현합니다.

이러한 설정을 통해 .NET 앱은 여러 환경에서 Azure 구성을 일관되게 사용할 수 있습니다.

Blob 스토리지 서비스 로직 구현

Tim은 DataAccess라는 새 폴더를 추가하고 BlobStorage.cs라는 이름의 클래스를 구현합니다. 내부에서 그는 IOptions를 사용하여 구성을 주입합니다.그리고 해당 정보를 비공개 인스턴스에 저장합니다.

그는 두 가지 주요 비동기 메서드를 개발합니다.

파일 업로드 로직

UploadFileAsync 메서드:

  • MVC 프런트엔드에서 IFormFile을 인수로 받습니다.

  • 연결 문자열과 컨테이너 이름을 사용하여 Azure Storage SDK에서 BlobContainerClient를 생성합니다.

  • 기존 컨테이너가 있는지 확인하고, 없으면 새 컨테이너를 생성합니다.

  • 접근 정책을 '없음'으로 설정하여 컨테이너가 공개적으로 접근 불가능하도록 합니다.

  • BlobClient 객체를 사용하여 스트림에서 파일을 업로드합니다.

Tim은 파일 스트림을 안전하게 처리하고 메모리 누수를 방지하기 위해 using 문과 await 호출을 사용합니다.

다운로드 파일 로직

DownloadFileAsync에서 Tim:

  • 문자열 파일 이름 또는 전체 블롭 URI를 허용합니다.

  • URI와 보안 자격 증명을 사용하여 새 BlobClient를 생성합니다.

  • DownloadStreamingAsync를 사용하여 파일을 다운로드합니다.

  • 스트림을 FileContentResult로 래핑하여 브라우저에서 다운로드할 수 있도록 합니다.

이렇게 하면 파일이 안전하게 보호되고 애플리케이션을 통해서만 접근할 수 있으며, URL 추측을 통한 직접적인 접근은 차단됩니다.

의존성 주입을 사용하여 Blob 스토리지 등록하기

Tim은 자신의 클래스에 대한 인터페이스(IBlobStorage)를 정의하고 이를 .NET DI 컨테이너에 싱글톤으로 등록합니다. 해당 클래스는 상태를 유지하지 않고 설정 값만 사용하므로 싱글턴 패턴이 최적입니다.

MVC 앱과의 통합

홈 컨트롤러가 IBlobStorage를 사용하도록 수정되었습니다. 이 책에는 다음 내용이 포함되어 있습니다:

  • 입력값을 검증하고 UploadFileAsync를 호출하는 UploadFile POST 메서드입니다.

  • URL을 확인한 후 DownloadFileAsync를 호출하는 GetFile POST 메서드입니다.

각 메서드는 스토리지 클라이언트와 상호 작용하여 업로드 또는 다운로드 시 블롭 파일을 안전하게 처리합니다.

파일 작업을 위한 Razor View UI

Tim은 Index.cshtml에서 다음과 같이 설정합니다.

  • 파일 입력 유형이 "file"이고 Bootstrap 스타일을 사용하여 파일을 업로드하는 양식입니다.

  • URI를 사용하여 파일을 다운로드하는 두 번째 형식입니다.

  • 파일 누락이나 잘못된 URI와 같은 예외적인 경우에 대한 오류 메시지 처리.

  • 업로드가 성공적으로 완료된 후 생성된 블롭 URI(https)를 표시하는 섹션입니다.

Tim은 리스트를 사용하여 오류를 처리하기도 합니다.UI에 명확하게 표시하여 사용자가 파일 선택 누락과 같은 문제를 알 수 있도록 합니다.

파일 보안 테스트 및 검증

Tim은 텍스트 파일을 업로드하고 브라우저에서 해당 URI에 직접 접근하려고 시도하지만, 예상대로 접근 정책이 '없음'으로 설정되어 있어 실패합니다.

Azure 포털에서 액세스 수준을 일시적으로 변경하면 해당 파일을 직접 링크를 통해 다운로드할 수 있습니다. 하지만 그는 곧바로 설정을 비공개로 되돌리며 Azure가 보안에 대한 세밀한 제어 기능을 제공한다는 점을 강조했습니다.

팀의 최종 권고사항

팀은 마지막으로 개발자들에게 마이크로소프트 애저가 최소한의 투자로도 많은 가치를 제공한다는 점을 다시 한번 강조합니다. 다음과 같은 도구를 사용하면:

  • NuGet 패키지

  • Azure SDK

  • Visual Studio

  • Azure 포털

  • 안전한 연결 문자열 및 키

C#을 사용하면 즉시 운영 가능한 스토리지 솔루션을 빠르게 구축할 수 있습니다. 대규모 시스템을 구축하든 소규모 테스트 프로젝트를 진행하든 Azure Blob Storage는 확장 가능하고 비용 효율적인 선택입니다.

"클라우드 서비스는 사용한 만큼만 비용을 지불하는 방식입니다. 따라서 필요한 만큼만 요청하세요."라고 팀은 강조합니다.

요약

Tim Corey는 스토리지 계정 생성 및 Blob 컨테이너 구성부터 MVC 애플리케이션에서 업로드 및 다운로드를 안전하게 처리하는 방법까지, .NET 에서 Azure Storage를 사용하는 전체 수명 주기를 다루는 자세한 지침을 제공합니다.

이 가이드와 Tim의 비디오를 통해 Azure Blob Storage를 자신 있게 사용할 수 있으며, 동시에 제어권을 유지하고 비용을 최소화하며 클라우드 개발의 모범 사례를 준수할 수 있습니다.

더 자세한 내용을 확인하시려면 전체 영상을 시청하시고, Azure 스토리지(C#)에 대한 더 유익한 콘텐츠를 보시려면 그의 YouTube 채널을 방문해 주세요.

Hero Worlddot related to C#의 Azure 저장소 소개
Hero Affiliate related to C#의 Azure 저장소 소개

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해