끄적끄적 인턴생활 (2020)/슬랙봇 만들기(2020)

azure blob data 가져오기 with api, python

jellylucy 2021. 12. 28. 13:14

 

해야할 일

1.

azure portal에 업로드되는 파일의 폴더안 data 들을

주기적으로 파악해

new data 의 유무를 따져야한다

 

-> azure portal api 필요

 

업로드 파일들은

azure 클라우드에 들어가 blob container에 들어간다

 

->container api 찾기

 

2. upload 파일 유무에 따라

 

3. 새 파일 생성되었다는 알림문 print.

새 파일 정보 (watch/ time) 만 알수있게끔.

 


빠른 시작: Azure Blob 스토리지 라이브러리 v12 - Python

이 빠른 시작에서는 Python용 Azure Blob 스토리지 클라이언트 라이브러리버전 12를 사용하여 Blob(개체) 스토리지에서 컨테이너 및 Blob을 만드는 방법을 알아봅니다. 그런 다음, Blob을 로컬 컴퓨터로 다운로드하는 방법과 컨테이너의 모든 Blob을 나열하는 방법을 알아봅니다.

docs.microsoft.com

따라한다 그대로.

 

1. 프로젝트 만들기

 

slack_bot 생성

 

그 안에 data 폴더도 생성

 

2. 패키지 설치

 

3.. 앱 프레임워크 설정

 

새 파일을 blob.py으로 저장

 

4. Azure Portal 자격증명복사

스토리지 연결 문자열 환경변수에 저장 .

 


코드예제

 

1. 연결문자열 가져오기

 

2. 컨테이너 만들기

이미 나는 컨테이너가 있고 있는것을 쓰기 때문에

(새로운 instance 만들면 돈나간다 주의)

 

3. 컨테이너에 Blob 업로드

(1) 로컬 디렉토리에 텍스트 파일을 만든다

data에 들어갈꺼고

filename은 test응로 .

(2)컨테이너 만들기에서의 BlobClient 개체 불러와서

(3)Blob에 test.txt 업로드하기

 

-> 이건 안쓰지.

 

4.컨테이너의 blob 나열

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)
 

이걸 그대로 쓰려고 했는데

위에서 나는 컨테이너를 만들지 않았고 있는걸 써야하는데 그걸 모르니까

경준님 코드를 이용했다 .

    # Create the BlobServiceClient object which will be used to create a container client
    blob_service_client = BlobServiceClient.from_connection_string(connect_str)

    # Instantiate a ContainerClient
    container_client = blob_service_client.get_container_client(
        "smartwatchdata")
 

컨테이너를 만들고

그다음 create단계가 아닌

(blob_service_client.create_container(container_name))

인스턴스화 단계로 가져오기

blob_service_client.get_container_client(container_name))

 

 

 

blob을 정하고 그것에 대한 list를 출력할때 너무 많아서 오류가 생기는 것같다.

 

이제 구체화를 시켜야하는데.

 

연동이 되었고

 

1분마다 파일의 개수 비교를 하고

 

다르면 업데이트된 파일을 출력해야한다.

 

출력문 -> 업데이트 시간+ 폴더명 + 파일명

 

 


github action으로 내가 원하는 시간에 파이썬파일을 실행할 수 있다.

 

그러면,

 

실행했을 때,

새 파일의 유무를 따져야 한다.