.NET 클라이언트 라이브러리를 사용하여 Batch 작업을 만들고 실행
이제 Azure Batch 서비스에 연결할 수는 .NET Core 앱이 하나 생겼으며, 3노드 풀을 만들었습니다. 이 모듈의 재기본 연습에서는 다음 재기본 기능 목록을 구현합니다.
- Azure Batch 서비스에서 사용할 수 있도록 비디오 파일 업로드
- 이러한 노드에서 실행되는 작업 만들기
- 비디오를 작업으로 변환하는 태스크 추가
- 업로드된 비디오를 변환하는 작업 실행
- 변환 태스크 상태 모니터링
- 추가 사용 요금이 발생하지 않도록 Batch 서비스 리소스 정리(해당 날짜의 처리 작업이 완료된 경우 풀을 삭제하는 옵션을 사용하여)
Batch 관리
Batch 클라이언트 API를 사용하여 다음 메서드를 사용하여 앱의 구성 요소를 만들고, 삭제하고, 모니터링합니다.
- batchClient.PoolOperations.CreatePool: 이전 연습에서 앱에 추가한 메서드
- batchClient.PoolOperations.DeletePoolAsync
- batchClient.JobOperations.CreateJob
- batchClient.JobOperations.AddTaskAsync
- batchClient.JobOperations.DeleteJobAsync
- batchClient.Utilities.CreateTaskStateMonitor
파일 관리
앞서 만든 스토리지 계정을 사용하여 입력 및 출력 파일을 Blob 스토리지에 저장하는 컨테이너를 만듭니다. Azure Storage Blob 클라이언트 라이브러리에서 다음 클래스 및 메서드를 사용할 수 있습니다.
- CloudStorageAccount: 생성된 Storage 계정에 대한 액세스 권한을 얻습니다.
- CloudStorageAccount.Parse(storageConnectionString): Storage 계정에 연결
- storageAccount.CreateCloudBlobClient: CloudBlobClient를 만듭니다.
- CloudBlobClient: 컨테이너를 만듭니다.
- blobClient.GetContainerReference(containerName): 컨테이너를 만들 수 있음
- CloudBlobContainer: Blob Storage를 만듭니다.
- container.GetBlockBlobReference(blobName): CloudBlockBlob을 만드는 데 사용
- container.CreateIfNotExistsAsync: 컨테이너가 없는 경우 컨테이너를 만드는 데 사용
- container.DeleteIfExistsAsync: 컨테이너가 있는 경우 컨테이너를 삭제하는 데 사용
- CloudBlockBlob: Blob Storage에 파일을 추가하거나 제거합니다.
- blobData.UploadFromFileAsync(filePath): 지정된 로컬 파일을 Azure Storage에 업로드합니다.
- blobData.GetSharedAccessSignature(sasConstraints): 업로드된 비디오에 액세스하는 데 사용할 공유 액세스 서명 URI를 가져옵니다.
- ResourceFile.FromUrl(blobSasUri, blobName): Azure Storage의 비디오 파일 경로를 제공
앱이 Azure Storage로 파일을 전송할 수 있도록 하려면 여러 단계를 수행해야 합니다. 또한 콘솔 앱에서 Blob 스토리지에 출력을 기록하도록 Batch 태스크를 설정해야 합니다.
Microsoft.Azure.Storage.Blob
NuGet 패키지를 추가합니다.- Azure Storage 자격 증명을 사용하여 스토리지 계정에 연결합니다.
- 스토리지 계정에 Blob 컨테이너를 만듭니다.
- Blob 클라이언트를 사용하여 입력 및 출력 파일에 사용할 두 개의 컨테이너를 만듭니다.
- 입력 컨테이너를 사용하여 로컬 MP4 비디오 파일을 업로드하고 Batch 작업에 대한 파일 목록을 저장합니다.
- 비디오가 변환되면 입력 컨테이너를 삭제하여 Azure에서 업로드된 모든 비디오를 제거할 수 있습니다.