Azure - Blob Container

sun02·2021년 9월 28일
0

Azure

목록 보기
4/4

1. 리소스 그룹 만들기

터미널에서 CLI로 생성했을 때와 마찬가지로
제일 먼저, 리소스 그룹과 지역을 설정한 후 검토 + 만들기를 눌러 리소스 그룹을 생성해 줍니다.

만들기를 한번 더 눌러줍니다.

2. Storage Account 생성하기

생성한 TestRG 리소스 그룹에 들어가 '+만들기' 를 눌러줍니다.

하단의 스토리지 계정 -> 만들기 에 들어갑니다.

  • 리소스 그룹이 이전에 생성한 'TestRG'로 설정되어있는지 확인합니다.
  • 고유한 스토리지 계정 이름을 생성해 줍니다.
    • 저는 제 이름 + sto 로 설정해주었습니다.
  • storage account의 지역을 리소스그룹(TestRG)와 같게 설정해줍니다.
  • 중복 : Azure의 가용성 영역에 대한 선택지로, Azure는 지역 별로 세 개의 가용성 영역을 생성하여 장애가 발생하였을 때 데이터를 보호할 수 있도록 하는데 이때 이 가용성 영역이 서로 같은 지역 내에 있을 지, 다른 지역에 있을 지에 대한 선택 항목입니다.
    • 다른 지역에 있다면 데이터를 더 안전하게 보호할 수 있겠지만, 트래픽 비용이 많이 발생하기 때문에 저는 default로 설정되어있는 GRS로 하였습니다.

'검토+만들기'를 누른 후, '만들기' 를 눌러줍니다.

배포가 완료되면 '리소스로 이동' 을 눌러줍니다.

스토리지에는 다음과 같이 네 가지 종류가 있습니다.

  • blob : 구조화되지 않은 대량의 데이터를 저장하는 데 최적화
    • 가장 많이 사용되는 것으로 Image, json, 동영상 등 올릴 수 있음
  • 파일 : 파일 공유를 위한 서비스
    • dropbox 와 유사
  • 큐 : 대량의 메시지를 저장하기 위한 서비스
    • 비동기 메시징
  • table service : 대량의 구조화된 데이러를 저장하기 위한 서비스
    • NoSQL

Storage 계정 자세히

3. Azure storage Explorer 다운받기

https://azure.microsoft.com/ko-kr/features/storage-explorer/#overview

다운 받은 후 응용프로그램폴더 안으로 추가해줘야 열립니다(맥의 경우)

저는 바로 로그인이 되던데 혹시 로그인이 안되어있다면
왼쪽의 카테고리 중 전기 콘센트(..) 같이 생긴 것을 눌러 구독 카테고리에 들어가면 로그인 할 수 있도록 웹 브라우저와 연결됩니다.

Azure portal 상에서 보여지는 storage account와 storage Explorer에서 보여지는 스토리지 어카운트는 같은 것입니다.

4. blob container 만들기

blobcontainer 에서 우클릭 하여 blob 컨테이너 만들기를 누른 후 이름을 소문자로 작성해 줍니다.

혹은 포털에서 '컨테이너 추가' 를 눌러 생성할 수도 있습니다.

  • 생성 후 새로고침을 하면 explorer에서 생성한 blob container를 포털에서, 또는 포털에서 생성한 것을 explorer 에서 확인할 수 있습니다.

5. Access key

지금과 같이 연습할 때만 다음과 같이 합니다.
실제 앱 개발시에는 이렇게 하면 안됩니다.!

키표시 > key1 또는 key2의 연결 문자열 copy

6. 프로젝트에 AZClient 라이브러리 설치하기

pod file에

pod 'AZSClient'

추가하여 설치해 줍니다.

프로젝트.xsworkspace를 열어줍니다.

7. 이미지 Upload

import AZSClient

가장 먼저 AZSClient 라이브러리를 임포트해줍니다.

- upload

저는 버튼을 눌러 upload할 것이기 때문에 @objc로 작성해주었습니다.


@objc func uploadIMG() {
	let account: AZSCloudStorageAccount = try! AZSCloudStorageAccount(fromConnectionString: "위에서 copy한 연결 문자열")
    
    	let blobClient: AZSCloudBlobClient = account.getBlobClient()
        let blobContainer: AZSCloudBlobContainer = blobClient.containerReference(fromName: "imgcon(이전에 생성한 blobContainer이름)")
        let blockBlob: AZSCloudBlob = blobContainer.blockBlockReference(fromName: "03750020.PNG(image 이름)")
        
        let imgData = self.imgV.image!.pngData()
        
        blockBlob.upload(from: imgData!) { errorA in
        	print("OK")
        }
    }
}
        	

이후 다음과 같이 버튼 action에 uploadIMG를 추가해줍니다.


self.btnB.addTarget(self, action: #selector(self.uploadIMG), for: UIControl.Event.touchUpInside)

업로드 실행 후 azure storage explorer 에서 refresh(보충) 버튼을 누르면 다음과 같이 이미지가 업로드된 것을 확인할 수 있습니다.

8. 이미지 download

먼저 노트북의 이미지를 드래그 앤 드랍으로 azure storage explorer에 추가해줍니다.

- download


 @objc func downloadIMG() {
     let account: AZSCloudStorageAccount = try! AZSCloudStorageAccount(fromConnectionString: "위에서 copy한 연결 문자열")
    
    let blobClient: AZSCloudBlobClient = account.getBlobClient()
    let blobContainer: AZSCloudBlobContainer = blobClient.containerReference(fromName: "imgcon(이전에 생성한 blobContainer이름)")
    let blockBlob: AZSCloudBlob = blobContainer.blockBlockReference(fromName: "03750033.JPG(다운받을 image 이름)")
    
    blockBlob.downloadData { err, dataA in
    	let downImg : UIImage = UIImage(data: dataA!)! 
        DispatchQueue.main.async() {
        	self.imgv.image = dowmImg
        }
    }
}

다음과 같이 download 메서드를 작성한 후 download 버튼에 해당 메서드를 추가한 후 실행합니다.

0개의 댓글