오늘은 파이썬을 이용해서 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
'백엔드' 카테고리의 다른 글
[Microsoft Azure] 애저 Azure Scale Sets 구축하기 (오토 스케일링) (1) | 2023.12.22 |
---|---|
[Microsoft Azure] Azure 로드밸런서 구축 (0) | 2023.12.20 |
[Microsoft Azure] Azure 컨테이너,스토리지 계정만들기, 이미지업로드 (2) | 2023.12.15 |
[Microsoft Azure] Azure 웹서버,WAS 역할하는 가상머신 만들기 (0) | 2023.12.15 |
[Microsoft Azure] Azure 가상머신 만들기, Tabby 터미널접속, 리소스 삭제하기 (0) | 2023.12.14 |