백엔드

[Microsoft Azure, Python] 파이썬으로 Azure 컨테이너에 파일 업로드,다운로드,삭제구현

음그냥 2023. 12. 16. 01:54
728x90
반응형
SMALL

오늘은 파이썬을 이용해서 Azure 컨테이너에 업로드,다운로드,삭제를 구현하는 포스팅 하려고한다

 

시작 !

 

 

< 파일 업로드 >

- VScode 새파일생성

VScode에서 파일 - 새파일 - 파일명.확장자 입력후 엔터를 치면 파일생성이 가능함

나는 파이썬으로 작업할거라서 파일명.py 로 생성했음

생성후에 확장자가 .py 이라서 추가로 확장을 설치할거냐고 묻는 창이 우측하단에 뜨는데 걍 설치 클릭하면됨

참고로 내가 만든 knoumall_blob이라는 파이썬 파일과 컨테이너에 넣을 파일이 같은 폴더에 있어야함

 

 

 

 

 

- cmd창 열고 명령어입력

파이썬 라이브러리를 설치함으로써 Azure에 있는 여러 리소스에 접근할수있는 방법을 쉽게사용할수있음

 

 

cmd창을 열고 아래처럼 명령어를 입력하면 라이브러리가 설치됨

pip install azure-storage-blob

 

-> 참고로 본인이 사용하는 윈도우계정이 관리자 계정이 아니라면 cmd창을 열때 관리자계정으로 열어서 라이브러리 설치해야함

 

 

 

 

 

 

- VScode 에서 만든 새파일에 코드작성

다시 VScode 열어서 파이썬 코드를 작성하겠음

import os
from azure.storage.blob import BlobServiceClient

try:
  print("한국방송통신대학교 클라우드 컴퓨팅 Blob 파일 업로드")
  connect_str = "<연결 문자열>"
  blob_service_client = BlobServiceClient.from_connection_string(connect_str)
  container_name = "<컨테이너 이름>"

  local_file_name = "main_carousel.png" 

  container_client = blob_service_client.get_container_client(container=container_name)

  print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)
  with open(file=os.path.join('', local_file_name), mode="rb") as data:
    blob_client = container_client.upload_blob(name=local_file_name, data=data, overwrite=True)
  
except Exception as ex: 
  print('Exception:') 
  print(ex)

-> 해당코드는 os라는 라이브러리에서 azure.storage.blob 의 BlobServiceClient객체를 임포트후,

로컬에 있는 main_carousel.png 파일을 컨테이너에 업로드 하겠다라는 코드임
(16번라인에서 스트림하게 바이너리파일을 업로드해서 컨테이너에 저장되도록 만들어줌)

 

 

컨테이너 이름에 azure에서 내가 만든 컨테이너 이름 넣어주고 (못찾겠으면 azure 검색창에 스토리지 계정 검색)

 

엑세스키를 누르면 이 스토리지에 접근하기위해서 발급받은 엑세스 키가 보임
연결문자열 옆에 표시를 클릭후 파이썬 <연결 문자열>코드부분에 복붙

 

 

작성한 파이썬 코드를 저장후 테스트 할것임 !

 

 

 

 

 

- cmd창 열어서 아래 명령어작성

 

파일경로 복사후

cd 파일경로

cd 명령어로 경로 이동후 

 

dir/w

검색후 파일이름 결과를 가로로 보여줌

 

python knoumall_blob.py

나는 파이썬코드를 썻으니 이렇게 입력했음

 

 

 

cmd창에 입력후 업로드가 정상적으로 되었는지 확인하기 위해 애저 컨테이너를 확인해보면 !!

짠 !!!

 

정상업로드 성공이다 !

 

구매고객이 사진찍어서 업로드해주면 포인트를 지급하는것을 다 이런식으로 구현할수있음

 

 

 

 

 

 

< 파일 다운로드 >

import os
from azure.storage.blob import BlobServiceClient

try:
  print("한국방송통신대학교 클라우드 컴퓨팅 Blob 파일 다운로드")
  connect_str = "<연결 문자열>"
  blob_service_client = BlobServiceClient.from_connection_string(connect_str)
  container_name = "<컨테이너 이름>"

  remote_file_name = "main_carousel.png" 
  local_file_name = "main_carousel_down.png"

  blob_client = blob_service_client.get_blob_client(container=container_name, blob=remote_file_name)

  print("\nDownloading blob from Azure Storage:\n\t" + remote_file_name)

  with open(file=os.path.join('', local_file_name), mode="wb") as download_blob:
        download_stream = blob_client.download_blob()
        download_blob.write(download_stream.readall())

except Exception as ex: 
  print('Exception:')
  print(ex)

main_carousel_down.png이름으로 새롭게 파일을 만들고,여기에 들어가는 바이너리 스트림은 blob_client.download_blob() 통해 받음

 

 

 

 

이미 만들어놓은 파이썬코드에 코드 덮어쓴후 cmd창으로 다시 실행해봤음

 

 

main_carousel_down 이라는 파일생성된게 보임

성공 !

 

 

 

 

 

 

 

< 파일 삭제 >

import os
from azure.storage.blob import BlobServiceClient

try:
  print("한국방송통신대학교 4학년 2학기 클라우드 컴퓨팅")
  connect_str = "<연결 문자열>"
  blob_service_client = BlobServiceClient.from_connection_string(connect_str)
  container_name = "<컨테이터 이름>"

  remote_file_name = "main_carousel.png"

  blob_client = blob_service_client.get_blob_client(container=container_name, blob=remote_file_name)

  print("\nDeleting a blob from Azure Storage: \n\t" + remote_file_name)
  blob_client.delete_blob()

except Exception as ex: 
  print('Exception:') 
  print(ex)

blob_client.delete_blob() 를 통해 파일삭제

 

 

 

다시 cmd창에 실행후 확인해보면

정상삭제가 잘 된것을 확인할수있다

 

끝!

 

 

이렇게 라이브러리를 이용해서 애저에서 컨테이너 관리가 가능함 !

 

 

 

 

 

 

 

 

 

참고 (정재화교수님 깃헙참고)

https://github.com/jaehwachung/cloud_computing/blob/main/blob_storage/upload_blob.py

 

728x90
LIST