Azure Functions HTTP 트리거를 사용하여 Blob Storage의 이미지를 SAS URL에서 다운로드하여 표시합니다(Azure Functions v1, Python 3.6.1).
이전 기사에서는 Blob에 액세스할 수 있는 상태였으므로 SAS를 생성하여 일시적으로 액세스 권한을 부여하고 다운로드 표시하도록 합시다.
Blob 액세스 레벨 변경
대상 컨테이너를 선택하고
アクセスレベルを変更します
를 클릭합니다.이전 기사에서는 Blob에 대한 액세스를 허용했지만 비공개로 변경합니다.
이제 Blob URL에서 액세스해도 볼 수 없습니다.
Function App 함수 만들기
SAS를 생성(1시간 사용 권한)하고 SAS 토큰이 포함된 SAS URL을 HTML 태그에 넣어 이미지를 표시합니다.
import os
import json
from datetime import datetime, timedelta, timezone
from azure.storage.blob import BlockBlobService
from azure.storage.blob import ContainerPermissions
import requests
import base64
account_name = '{your-storage-account}'
account_key = '{your-storage-account-key}'
container_name = 'test'
service = BlockBlobService(account_name=account_name, account_key=account_key)
sas_token = service.generate_container_shared_access_signature(container_name, ContainerPermissions.READ, datetime.utcnow() + timedelta(hours=1))
print (sas_token)
blobs = service.list_blobs(container_name)
files = []
for blob in blobs:
files.append(blob.name)
# response HTML
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))
sas_url = "https://{your-storage-account}.blob.core.windows.net/" + container_name + "/" + files[0] + "?"+ sas_token
write_http_response(200, "<html><h1>" + files[0] + "</h1><img src=" + "\"" + sas_url + "\"" + ">" + "</html>")
아래에서도 표시할 수 있습니다. requests에서 SAS URL에서 이미지를 다운로드 한 후 HTML 태그에 base64로 인코딩 된 이미지 데이터를 넣습니다.
ret = requests.get("https://{your-storage-account}.blob.core.windows.net/" + container_name + "/" + files[0] + "?"+ sas_token)
print(ret)
# response HTML base64 binary
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))
ret = requests.get("https://{your-storage-account}.blob.core.windows.net/" + container_name + "/" + files[0] + "?"+ sas_token)
print(ret)
img = base64.b64encode(ret.content)
write_http_response(200, "<html><h1>" + files[0] + "</h1><img src=" + "\"data:image/jpg;base64," + img.decode() + "\"" + ">" + "</html>")
이전 기사처럼 저장하고 실행, 함수의 URL에서 lena.jpg가 표시되면 OK입니다.
요약
참고문헌
Reference
이 문제에 관하여(Azure Functions HTTP 트리거를 사용하여 Blob Storage의 이미지를 SAS URL에서 다운로드하여 표시합니다(Azure Functions v1, Python 3.6.1).), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SatoshiGachiFujimoto/items/7afee3344687afb63077텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)