Azure Storage Account

Cloud/Azure / /
728x90

 

1.    Storage Account

1)      Azure에 데이터 및 파일을 저장할 수 있는 전용 스토리지의 집합

2)      Storage Account 생성


A.     해당 사용 구독 선택

B.      리소스 그룹 선택 : 이후 해당 리소스 그룹 제거 시 동시 제거로 제어될 수 있음, 해당 스토리지의 권한이 리소스 그룹으로 관리될 수 있음

C.      계정 이름 : 해당 이름 연결 도메인의 sub도메인으로 설정

D.     계정 종류 : Datalake Gen2를 사용하기 위해서는 StorageV2를 사용해야 함

E.      Datalake Gen2 옵션


                                  i.         해당 고급 탭에서 Gen2 옵션을 설정할 수 있음

                                 ii.         계층 구조 네이스페이스의 장점

가)    빅데이터 워크로드 가속화

나)    Hive Spark 등의 Hadoop Eco 시스템과 호환

3)      저장 방식

A.     컨테이너 : 대규모로 확장 가능한 Blob 스토리지 (Datalake 옵션 가능)

B.      파일 공유 : 서버리스 SMB 파일 공유

                                  i.         네트워크 드라이브 형태로 해당 스토리지에 연결 가능


                                 ii.         테이블 : 간단한 테이블 형식의 데이터 스토리지

                                iii.         : 트래픽에 따라 효과적으로 앱 확장에 활용, 일반적인 소스의 큐 형태로 메시지를 비동기적 큐 사용

2.    Azure Storage Explorer

1)      파일 시스템

A.     Azure 전용의 파일 관련 어플리케이션

B.      https://azure.microsoft.com/ko-kr/features/storage-explorer/ 에서 설치


C.      Azure AD 계정을 추가하여 Storage를 관리할 수 있다.


2)      컨테이너(Blob – Datalake Gen2 Option)와 파일공유

A.     업로드 : 파일 및 폴더 전체를 업로드 할 수 있다.


B.      폴더 생성의 Path 및 처리가 가능하다

                                  i.         잘라내기 서비스는 지원하지 않음

                                 ii.         복사, 붙여넣기, 삭제, 파일 및 폴더 이름 변경 가능


                                iii.         권한 관리 : Azure Active Directory 계정이나 그룹을 검색하여 추가 가능


3)     

A.     메시지 만들기


                                  i.         원하는 내역을 만료일 설정하여 추가

                                 ii.         최대 64kb까지 저장 가능

                                iii.         Base64로 암호화됨

B.      메시지 보기


                                  i.         저장해 놓은 시간 및 만료시간 확인 가능

                                 ii.         메시지 수정 불가함

C.      메시지 삭제 : 큐에서 메시지 제거로 삭제 가능

D.     큐 지우기 : 큐에 포함되어 있는 모든 메시지 제거

4)      테이블

A.     추가 : 엔터티에 해당 속성(컬럼)을 추가


                                  i.         속성(컬럼)을 추가하여 값을 입력

                                 ii.         기본값으로 PartitionKey, RowKey, Timestamp 등이 기본값으로 추가 됨

가)    PartitionKey, RowKeyString 형으로 고정되며 기본값이 자동 입력되지 않음

나)    Timestamp는 컬럼 및 기본값이 자동 생성됨

                                iii.         쿼리 : 조건을 추가하여 원하는 row의 데이터를 조회 가능


3.    AzCopy

1)      Blob 또는 파일 시스템에 복사를 사용할 수 있는 명령 줄 유틸리티

2)      AzCopy를 다운로드하여 설치 :
https://docs.microsoft.com/ko-kr/azure/storage/common/storage-use-azcopy-v10

3)      환경 변수 적용 후 확인


환경변수 등록 후 azcopy –ls –h 등을 통해 연결 여부 확인 가능

4)      Azure Portal에서 공유 엑세스 토큰을 생성


5)      Azcopy 명령어

A.     명령어 패스 뒤에는 항상 SAS 토큰이 필요

B.      make : 컨테이너나 파일 시스템을 만들 수 있다.

azcopy make ‘https://yhjinst.dfs.core.windows.net/yhjinst?sv=2019-02-02&ss=bfqt&srt=sco-&sp=rwdlacup&se=2020-02-24T13:07:42Z&st=2020-02-24T05:07:42Z&spr=https&sig=%2f65%2BlhcxKILLg9adkr%2BXal77CXRlfdekCrYSZ5%2FRJQ0%3D’

 

# https://<스토리지계정>.[blob/dfs(ADSLG2)/file].core.windows.net/<컨테이너명><SAS 토큰>

 

C.      copy : 해당 컨테이너 위치에 파일을 업로드 및 다운로드 할 수 있다.

                                  i.         업로드

azcopy copy C:\azcopy\ “https://yhjinst.dfs.core.windows.net/yhjinst?sv=2019-02-02&ss=bfqt&srt=sco-&sp=rwdlacup&se=2020-02-24T13:07:42Z&st=2020-02-24T05:07:42Z&spr=https&sig=%2f65%2BlhcxKILLg9adkr%2BXal77CXRlfdekCrYSZ5%2FRJQ0%3D --recursive=true

 

# --recursive=true  폴더 전체 업로드

 

# azcopy copy “<업로드할 로컬 정보” https://<스토리지계정>.[blob/dfs(ADSLG2)/file].core.windows.net/<컨테이너명><SAS 토큰> <옵션>

 

                                 ii.         다운로드

azcopy copy “https://yhjinst.dfs.core.windows.net/yhjinst?sv=2019-02-02&ss=bfqt&srt=sco-&sp=rwdlacup&se=2020-02-24T13:07:42Z&st=2020-02-24T05:07:42Z&spr=https&sig=%2f65%2BlhcxKILLg9adkr%2BXal77CXRlfdekCrYSZ5%2FRJQ0%3D C:\azcopy\ --recursive=true

 

# --recursive=true  폴더 전체 다운로드

 

# azcopy copy https://<스토리지계정>.[blob/dfs(ADSLG2)/file].core.windows.net/<컨테이너명><SAS 토큰> “<다운로드한 파일을 저장할 로컬 정보” <옵션>

 

D.     rm : 해당 위치의 데이터를 삭제

azcopy rm “https://yhjinst.dfs.core.windows.net/yhjinst?sv=2019-02-02&ss=bfqt&srt=sco-&sp=rwdlacup&se=2020-02-24T13:07:42Z&st=2020-02-24T05:07:42Z&spr=https&sig=%2f65%2BlhcxKILLg9adkr%2BXal77CXRlfdekCrYSZ5%2FRJQ0%3D --recursive=true

 

# --recursive=true  폴더 전체 삭제

 

# azcopy copy https//<스토리지계정>.[blob/dfs(ADSLG2)/file].core.windows.net/<컨테이너명><SAS 토큰>  <옵션>

 

E.      그 외의 명령어 : https://docs.microsoft.com/ko-kr/azure/storage/common/storage-ref-azcopy?toc=/azure/storage/blobs/toc.json

4.    Python

1)      Azure에서 제공하는 SDK를 이용하여 스토리지를 제어할 수 있다.

2)      SDK 설치

pip install azure-storage-blob

pip install azure-storage-file

pip install azure-storage-queue

 

3)      Blob : azure-storage blob

A.     업로드

import os

import azure.storage.blob as azb 

 

try:

local_path = "./data"

local_file_name = "temp.log"

upload_file_path = os.path.join(local_pathlocal_file_name)

upload_blob_path = "https://adlsyhjin.blob.core.windows.net/tempfile/src/" + local_file_name    

 

with open(upload_file_path"rb"as data

azb.upload_blob_to_url(blob_url=upload_blob_pathdata=datacredential="?sv=2019-02-02&ss=b&srt=sco&sp=rwdla&se=2999-03-12T10:44:43Z&st=2020-03-12T02:44:43Z&spr=https&sig=2bi20fAEYqCTogdqx65cp%2BdX8PuH2XRznW2hTOmTdP0%3D"overwrite=True)

 

except Exception as ex:

    print('Exception:')

 

                                  i.         로컬의 파일 정보를 설정

                                 ii.         올라갈 Azure Storage Account Blob 컨테이너의 위치를 설정한다.

                                iii.         파일을 읽어 Blob Stream 형태로 업로드 하게 되는데 azcopy와 마찬가지로 SAS 정보를 알고 있어야 한다.

                                iv.         폴더 단위 업로드는 지원되지 않아 loop문을 구성하여 업로드를 해야 한다.

B.      다운로드

import osuuid

import datetime

from azure.storage.blob import BlobServiceClient

 

try:

connect_str = 'DefaultEndpointsProtocol=https;AccountName=adlsyhjin;

AccountKey=pXaPQKkHngsedsHPyoP9o47j61y3yMS0AVzieNNq05DnyIA/

J7QPhnv5cF8XXnXyU2ZPH+8rscJRbyy4kAOwEA==;EndpointSuffix=core.windows.net'

blob_service_client = BlobServiceClient.from_connection_string(connect_str)

 

file_list = list()

container_client = blob_service_client.get_container_client("tempfile")

for blob in container_client.list_blobs():

    if str(blob.name).find(“src/') != -1 and str(blob.content_settings.content_type) != 'None' :

        file_list.append(blob.name)

 

download_path = './data/test'

 

for file_path in file_list :

    file_path_s = file_path.split('/')

    file_name = list.pop(file_path_s[-1:])

 

    download_file_path = download_path + '/' + file_name

 

    blob_client = blob_service_client.get_blob_client(container= temp, blob=file_path)

 

    with open(download_file_path, "wb"as download_file:

        download_file.write(blob_client.download_blob().readall())

 

        print(blob_client.blob_name + ' ok')

except Exception as ex:

    print('Exception:')

 

                                  i.         Azure Storage Account에 연결 후 Blob의 리스트를 가져온다. (Blob 컨테이너 단이 아니 Storage 연결이기 때문에 연결문자열로 연결함)

                                 ii.         리스트 검색해서 원하는 Blob을 선택

                                iii.         해당 Blob의 파일을 검색하여 원하는 파일을 다운로드 한다.

4)      파일시스템 : azure-storage-file

A.     업로드

from azure.storage.file.fileservice import FileService

from azure.storage.file.models import SMBProperties

 

FileFileService_Clinet  = FileService(account_name='yhjinst'account_key='BaDEKla

/gc6DSXhgFoX5gJTB+bWbofYdDiw0UiEy6RkV/1UpyowDdCIAuCoWgwvJs6iJVo16sNzxC8UJs+69Kw=='

sas_token=Noneprotocol='https'endpoint_suffix='core.windows.net'

request_session=Noneconnection_string=Nonesocket_timeout=None)

 

FileFileService_Clinet.create_file_from_path(share_name='yhjinsmbtest'

directory_name='test01'file_name='20200303.parquet'local_file_path='./data/20200303'

smb_properties=SMBProperties(ntfs_attributes=Nonecreation_time=None

last_write_time=Nonepermission_key=None))

 

                                  i.         파일시스템에 연결하여 클라이언트 정보 조회

                                 ii.         해당 파일은 path, byte, stream 등으로 업로드 할 수 있다.

B.      다운로드

from azure.storage.file.fileservice import FileService

from azure.storage.file.models import SMBProperties

 

FileFileService_Clinet  = FileService(account_name='yhjinst'

account_key='BaDEKla/gc6DSXhgFoX5gJTB+bWbofYdDiw0UiEy6RkV/

1UpyowDdCIAuCoWgwvJs6iJVo16sNzxC8UJs+69Kw=='sas_token=Noneprotocol='https'

endpoint_suffix='core.windows.net'request_session=Noneconnection_string=None

socket_timeout=None)

 

FileFileService_Clinet.get_file_to_path(share_name='yhjinsmbtest'directory_name='test01'

file_name='20200303.parquet'file_path='./data/20200303.parquet'open_mode='wb')

 

                                  i.         파일시스템에 연결하여 클라이언트 정보 조회

                                 ii.         해당 파일명으로 조회하여 바로 다운로드 가능

5)      : Azure-storage-queue

A.     메시지 보내기

from azure.storage.queue import QueueClient

 

connect_str = 'DefaultEndpointsProtocol=https;AccountName=yhjinst;

AccountKey=BaDEKla/gc6DSXhgFoX5gJTB+bWbofYdDiw0UiEy6RkV/

1UpyowDdCIAuCoWgwvJs6iJVo16sNzxC8UJs+69Kw==;EndpointSuffix=core.windows.net'

 

queue_service_client = QueueClient.from_connection_string(conn_str=connect_str

queue_name='yhjinqueuetest')

queue_service_client.send_message('mesage3')

 

                                  i.         연결문자열로 스토리지 계정에 접근

                                 ii.         큐 클라이언트 조회

                                iii.         메시지 발송하여 저장

B.      메시지 꺼내기

from azure.storage.queue import QueueClient

 

connect_str = 'DefaultEndpointsProtocol=https;AccountName=yhjinst;

AccountKey=BaDEKla/gc6DSXhgFoX5gJTB+bWbofYdDiw0UiEy6RkV/

1UpyowDdCIAuCoWgwvJs6iJVo16sNzxC8UJs+69Kw==;EndpointSuffix=core.windows.net'

queue_service_client = QueueClient.from_connection_string(conn_str=connect_str

queue_name='yhjinqueuetest')

messages = queue_service_client.receive_messages()

 

for msg in messages:

    print(msg.content)

 

                                  i.         연결문자열로 스토리지 계정에 접근

                                 ii.         큐 클라이언트 조회

                                iii.         저장된 메시지는 PIPO로 전체 출력

                                iv.         POP된 내역은 삭제 된다.

 

728x90

'Cloud > Azure' 카테고리의 다른 글

Azure Data Factory - Data Flow  (0) 2021.04.20
Azure Data Factory - Datasets  (0) 2021.04.20
Azure Data Factory - Pipeline  (0) 2021.04.19
Azure Data Factory (ADF) 란?  (0) 2021.04.19
Azure Resource Group & Azure Active Directory  (0) 2021.04.16
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기