Azure Functions HTTP 트리거로 Blob Storage의 이미지 보기(Azure Functions v1, Python 3.6.1)

Azure Functions의 HTTP 트리거로 Blob Storage에 있는 이미지를 표시해 봅시다.
※Chrome상의 Azure Portal의 표시가 어쩐지 상태 나쁘기 때문에 Edge로 하고 있습니다.

Function App 만들기



Azure 포털에 로그인합니다.リソースの作成 에서 Function App 을 만듭니다.


가능하면 리소스로 이동합니다.
Python에서 하고 싶으므로 런타임 버전을 ~1로 변경합니다.


사용자 지정 함수를 만듭니다.


HTTP trigger를 선택하고 생성합니다.


Azure Functions에서 Python3 사용 을 참고로 Python을 설정합니다.
https://{your-app-name}.scm.azurewebsites.net/DebugConsole

를 엽니다. {your-app-name}에 Function App의 이름을 넣으십시오. (예: gachimoto-blob)

아래 명령으로 Python3을 설치합니다.
> cd D:\home\site\tools
> nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python361x64
> mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/* /d/home/site/tools/

pip로 azure-storage 라이브러리를 설치합시다.
> D:\home\site\tools\python.exe -m pip install azure-storage



스토리지 계정 만들기



스토리지 계정을 만듭니다.


배포가 완료되면 리소스로 이동합니다.
스토리지 계정 이름과 key1을 기록합니다.


컨테이너 만들기



컨테이너를 만듭니다. test라는 컨테이너를 만들었습니다. Blob은 액세스할 수 있도록 합니다.




이미지 업로드



test 컨테이너에 lena.jpg를 업로드해 보았습니다.


Blob의 액세스를 가능하게 하고 있으므로, URL로부터 볼 수 있습니다.
예: https://{your-storage-account}.blob.core.windows.net/test/lena.jpg


Function App 함수 만들기



이미지 업로드가 완료되면 Function App로 돌아갑니다.

HttpTriggerPython31의 내용은 다음과 같습니다.
import os
import json
from azure.storage.blob import BlockBlobService

account_name='{your-storage-account}'
account_key='{your-storage-account-key}'
container_name='test'

service = BlockBlobService(account_name=account_name,account_key=account_key)
blobs = service.list_blobs(container_name)

files = []
for blob in blobs:
    files.append(blob.name)

def write_http_response(status, body):
    return_dict = {
        "status": status,
        "body": body,
        "headers": {
            "Content-Type": "text/html"
        }
    }
    output = open(os.environ['res'], 'w')
    output.write(json.dumps(return_dict))

write_http_response(200, "<html><h1>" + files[0] + "</h1><img src=" + "\"" + "https://{your-storage-account}.blob.core.windows.net/test/" + files[0] + "\"" + ">" + "</html>")
account_nameaccount_key 에는 메모된 스토리지 계정 이름과 key1을 넣습니다.

test 컨테이너 안에 있는 Blob 리스트를 가져오고 리스트의 첫 번째 파일의 URL을 HTML 태그에 넣고 반환합니다.
統合 에서 HTTP 메서드를 GET 로 변경합니다.

保存および実行 를 클릭해, 출력이 진행 상황 200 OK가 되면 성공입니다.
<html><h1>lena.jpg</h1><img src="https://{your-storage-account}.blob.core.windows.net/test/lena.jpg"></html>

함수의 URL을 얻고 열어 봅시다.


lena.jpg가 표시되면 OK입니다.


요약


  • Azure Functions를 사용하여 Blob Storage 이미지를 표시했습니다.
  • GET에서 HTML을 반환하는 사람이 생겼습니다
  • 다음은 쿼리 문자열 붙이거나, 볼 수 있는 사람 제한하거나, SAS 사용하고 싶지요?

  • 참고문헌


  • Content-Type 목록
  • 좋은 웹페이지 즐겨찾기